这往往是引用的问题。ARC要求完整的前向引用,也就是说在MRC时代可能只需要在.h中申明@class就可以,但是在ARC中如果调用某个子类中未覆盖的父类中的方法的话,必须对父类.h引用,否则无法编译。
这里既然提到了ARC,我们就说说如何在ARC工程中使用MRC规则编译指定的文件和如何在MRC工程中使用ARC规则编译文件。
在MRCMRC工程中使用ARC规则编译,Xcode专门提供了一个小工具来鼓励开发者使用ARC,这个小工具是Edit->Refactor下的Convert to Objective-C ARC,点击后会让我
们选择要转换哪几个文件,然后选择需要使用ARC规则编译的文件就OK。如下图:
另外我们还有另一种方法改变文件的编译规则。
选中TARGETS->Build Phases ->Compile Source 然后在需要使用ARC规则编译的文件后面加上-fobjc-arc就OK,在需要使用非ARC(MRC)规则编译的文件后面加上-fno-objc-arc就OK,可参考下图: