[iOS]关于IBOutlet

为了使用Interface Builder,我们需要在如XXViewController.h中增加IBOutlet标记。
IBOutlet对于编译器而言只是一个标记,也就是说,编译器会忽略这个关键字。
Interface Builder则是根据IBOutlet来寻找可以在Builder里操作的成员变量。

需要注意的是,任何一个被声明为IBOutlet并且在Interface Builder里被连接到一个UI组件的成员变量,会被额外retain一次。
常见的情形如

IBOutlet UILabel *label;

这个label在Interface Builder里被连接到一个UILabel。此时,这个label的retainCount为2。
所以,只要使用了IBOutlet变量,一定需要在dealloc或者viewDidUnload里release这个变量。

Unknown class in Interface Builder file

Interface Builder找Class的机制和一般的源文件相同,需要保证包含目标symbol的文件被链接进到最终的app。

出现这个错误,是因为这个class只在IB中用到,编译器在其他源文件中没有发现对这个class的引用,于是没有链接那个class。

解决方法:
1. 在任意一个源文件中使用一下这个class,比如NSLog(@”%@”, classA);
2. 在project的Info里面的Link Flag处,增加-all_load,这样会链接所以存在的symbol