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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 红火恍惚 中级黑马   /  2015-8-28 21:39  /  554 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于循环retain问题的个人整理:
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



评分

参与人数 3黑马币 +8 收起 理由
塞巴斯的小夏尔 + 3 赞一个!
chao超 + 3 赞一个!
HOTSUMMER + 2 赞一个!

查看全部评分

0 个回复

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