Xcode第二个Cocoa程序——交换图片
昨天编了第一个程序,有点小欣喜,今天差点不知道要编什么了,由于刚起步,还不会写那些复杂的计算器之类的程序,况且由于项目需要做视频源的自动切换之类的开发,所以今天先从最基础的做起,做一个包含两个图片框的程序,点击按钮之后能够交换两张图片的位置。
今天不贴代码了,编写方法跟昨天一样,这里要说的是图片的交换的方法。在Cocoa中,图片是NSImage类型的对象,而图片框中的图片对象则是NSImageView.image,所以可以新建一个NSImage对象,用于两幅图片交换时的暂存,姑且将其称为图C。所以整个交换过程如下:
NSImage *C; C=image1.image; image1.image = image2.image; image2.image=C;
今天的编写非常顺利,一遍就编译通过了,运行结果也正常。
总结一下:
1、C++中新建对象需要new指令,且不带星号。而OC中是直接类名 *对象名这样的声明语法,看上去像是指针,应该是开辟了一个新的内存区。
2、今天的代码中为什么没有中括号?什么情况下要中括号?还没查到答案,先把问题扔在这儿。
另外补充一下应用退出方面的代码:
默认情况下,Xcode编译出来的App即便是关闭窗口之后也不会退出,如果希望在关闭最后一个窗口之后程序退出,常用的方法是使用applicationShouldTerminateAfterLastWindowClosed函数,只需在.m文件中添加这一函数:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender{ return YES; }
函数的意思是如果App最后一个窗口被关闭,是否退出App,返回YES则是关闭。