关于.h相互import的问题
2017-12-04 本文已影响20人
程序狗
image.png
image.png
image.png
image.png
image.png
如图所示,当我们Father类与Son类分别在.h相互,并定义了相互的一个属性,Father类定义了Son类的一个属性,Son类定义了Father类的一个属性,编译器报了不能识别Father类和Son类的错误。
这是为什么呢?
原因就在于,Father类在声明的时候定义了一个Son类,Son类在声明的时候定义了一个Father类,导致了循环定义,所以编译器报了无法识别的错误。
如何解决这个问题呢,这时就可以引入@class关键字。分别在Father类和Son类用@class Son和@class Father告诉编译器我们有Father和Son这个类,如图
image.png
image.png
此时,我们就可以编译通过了。
其实,我们提倡在.m文件中Import .h文件,因为每次已修改h文件时,所有import该h文件都需要重新在编译,大大加长了编译的时间。所以我们更提倡在h文件使用@class 关键字而在m文件import。