黑马程序员技术交流社区
标题:
关于循环retain与@class的问题
[打印本页]
作者:
李国华
时间:
2015-3-24 10:52
标题:
关于循环retain与@class的问题
看到循环retain与@class的视频,其中讲到两端循环引用的解决方案,一端引用retain,一端引用assign。代码如下:(Person与Card两个类)
@class Card;
@interface Person : NSObject
@property (nonatomic,retain) Card *card;
@end
复制代码
@class Person;
@interface Card : NSObject
@property (nonatomic,assign) Person *person;
@end
复制代码
但是之前有提到retain适用于OC对象,assign适用于非OC对象,显然person也是OC对象,这样是不是跟之前讲的矛盾啊?我自己理解的不够深刻,烦请各位战友给我指导一下吧,非常感谢!:loveliness:
作者:
静好
时间:
2015-3-24 11:48
这里如果都是用retain,在主函数里就需要用两次的release,然后会调用两次dealloc,当Person 和Card,相互引用的时候,计数器无法释放,只能通过一段用assign直接赋值的方法,至于参数处可以用assign,我个人觉得是@class在文件
作者:
静好
时间:
2015-3-24 11:52
至于参数处可以用assign,我个人理解为时在@class Person文件里的特殊语法,只在两端循环的时候才这样
作者:
yyx1992
时间:
2015-3-24 13:42
可以理解为互相引用是个例外,其他的则遵循原来的原则
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2