现在,你可能已经注意到在Objective—C标识符中起始的两个字母是非常重要的。IB能帮你解开疑惑,它代表Interface Builder。如果查找IBOutlet和IBAction的定义,你可能会对UINibDeclarations.h里找到的结果感到疑惑。
#define IBOutlet
#define IBAction void
当IBOutlet和IBAction添加到你的代码中,并没有添加任何其他附加功能。如上所见,两个标识符的定义事实上是没有实际操作的,你做的只是标记代码,使Interface Builder可以解析它。
IBOutlet用来标记那些将用于图像编辑器及源代码中的对象。同样,IBAction是用来标记方法可以在两个不同的编辑环境进行共享。
神奇的方式
从源代码的角度看,mySlider、myButton、myLabel这些对象会在程序运行时神奇地出现。这种魔法让你的生活变得更加容易,但重要的是要理解这个技巧,这样你才能充分利用潜在的一些特性。
在最一开始的程序配置文件中,HitMaker—Info.plist包含一个主NIB文件名(NSMainNibFile),它告诉Cocoa当程序执行时需要首先载入指定的文件。如果指定MainWindow,则所有在MainWindow.xib中的对象将会被加载到内存中。
说明:NIB是“NeXT Interface Builder”的缩写,在旧版中用于文件的扩展名。许多开发人员和大部分的框架都还在使用这个词。现在新的文件都使用.xib扩展名,xib这种新的格式基于XML,因此用X作为扩展名的第一个字母。
有些时候开发人员会讲NIB文件,而在另一些时候他们会说XIB文件,其实是一回事,都是指包含用户界面部分的文件。
加载的部分过程是设置所有那些被定义为IBOutlet的实例变量。NIB的加载机制使用访问器来设置这些实例变量,它会使用内存中的对象来调用一setMySlider:、—setMyButton:和—setMyLabel:方法。
最酷的是,那些被加载的对象拥有你在Interface Builder中所做的所有设置。
……
展开