A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liyale92 中级黑马   /  2015-9-21 22:57  /  567 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1,什么是循环retain?
    两个类之间互相包含;

        例如:Dog中retain了一个Person,Person中retain了一个Dog;
        @interface Dog : NSObject
        @property (nonatomic,retain) Person *owner;
        @end

        @interface Person : NSObject
        @property (nonatomic,retain) Dog *dog;
        @end

        Person *p = [Person new];
        Dog *d = [Dog new];

        p.dog = d;
        d.owner = p;


2,如何解决循环retain?
    在两端的set方法中,有一端必须使用assign直接赋值,不能用retain;在@property中参数使用assign。

        例如:
        @interface Dog : NSObject
        @property (nonatomic,assign) Person *owner;
        @end

        @interface Person : NSObject
        @property (nonatomic,retain) Dog *dog;
        @end

        Person *p = [Person new];
        Dog *d = [Dog new];

        p.dog = d;
        d.owner = p;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马