1,@class的使用场景:对于循环依赖关系来说,比如A类引用B类,同时B类也引用A类。当使用@class在两类相互声明,就不会出现编译报错。使用 @class 类名; 就可以引用一个类,说明一下它是一个类,
@class的作用:仅仅告诉编译器,某个名称是一个类
2,如果a对象retain了b对象,b对象也retain了对象,这样会导致a对象和b对象永远都无法释放。
解决办法:当两端相互引用时,一端用retain,一端用assign。(这里可以理解为class也是一种类型,它是类对象的类型,这样使用assign就不会不明白了吧。)
- //Card类的声明
- @class Person;
- @interface Card : NSObject
- @property (nonatomic, assign) Person *person;
- @end
- //Person类的声明
- @class Card;
- @interface Person : NSObject
- @property (nonatomic, retain) Card *card;
- @end
复制代码 |