instance message is a forward declaration

这往往是引用的问题。ARC要求完整的前向引用,也就是说在MRC时代可能只需要在.h中申明@class就可以,但是在ARC中如果调用某个子类中未覆盖的父类中的方法的话,必须对父类.h引用,否则无法编译。

这里既然提到了ARC,我们就说说如何在ARC工程中使用MRC规则编译指定的文件和如何在MRC工程中使用ARC规则编译文件。

在MRCMRC工程中使用ARC规则编译,Xcode专门提供了一个小工具来鼓励开发者使用ARC,这个小工具是Edit->Refactor下的Convert to Objective-C ARC,点击后会让我

们选择要转换哪几个文件,然后选择需要使用ARC规则编译的文件就OK。如下图:


instance message is a forward declaration_第1张图片instance message is a forward declaration_第2张图片

另外我们还有另一种方法改变文件的编译规则。

选中TARGETS->Build Phases ->Compile Source 然后在需要使用ARC规则编译的文件后面加上-fobjc-arc就OK,在需要使用非ARC(MRC)规则编译的文件后面加上-fno-objc-arc就OK,可参考下图:

instance message is a forward declaration_第3张图片

你可能感兴趣的:(iOS,ARC)