类A部分属于类B,这时属于复合关系,在类B中申明类A的指针即可,然后在类B的头文件开头使用@class A来包含类A的信息,告知编译器我要用到类A的信息,至于具体内容后续编译时会知道。或者使用#import “A.h“来直接声明,但是头文件的方式不能相互引用。
类A全部属于类B,这时属于继承关系,这时就不能在头文件使用@class语句来声明了,因为编译器需要先知道所有父类的信息才能成功的将其子类编译@interface部分,编译器需要利用头文件的信息计算在内存的什么位置能找到这些使例变量,每个方法通过自身的self隐藏指针进行寻找。为了能够准确计算出实例变量的位置,编译器必须了解该类的所有内容。