黑马程序员技术交流社区

标题: 关于循环retain与@class的问题 [打印本页]

作者: 李国华    时间: 2015-3-24 10:52
标题: 关于循环retain与@class的问题
看到循环retain与@class的视频,其中讲到两端循环引用的解决方案,一端引用retain,一端引用assign。代码如下:(Person与Card两个类)
  1. @class Card;
  2. @interface Person : NSObject
  3. @property (nonatomic,retain) Card *card;
  4. @end
复制代码

  1. @class Person;
  2. @interface Card : NSObject
  3. @property (nonatomic,assign) Person *person;
  4. @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