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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LeeWong 中级黑马   /  2014-10-26 19:18  /  714 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     应该是 谁retain 谁release吧     比如:a.h中
               @property ( nonatomic,retain) Book *book;
              那么应该在a.m中的dealloc函数中添加
                 [_book release];
上面描述的是正确的吧,也就是说在这个对象被销毁之前要把它所拥有的 其他的成员都release掉
     我的问题:
     为什么在 循环引用(就是老师讲的身份证和人两个类的那个问题)中  为了避免相互占用 将 person 拥有的card改为assign,那么
    在card.h中声明: @property ( nonatomic,retain) Person *person;
     为什么他的release操作要在Person.m中的 dealloc方法中呢?  不是应该 在 card.m中吗?
主函数中 根据计数器 一步一步走  我我知道 必须这么做 但是 不是谁 retain 谁release吗?

我现在的理解: 是因为Person 是一个类, card 有一个成员是Person   就是在card被销毁前一定要销毁他的Person  Person的销毁只能在Person.m中完成
然后在Person的dealloc中执行一次[_card release]  等于销毁了card的Person变量(能这样理解吗?)
老师原来讲过 建议把 dealloc中的 release 操作 改为[self release]  ,由于Person是先被销毁的那个 那么在执行他的dealloc方法时  self的值是什么呢?

说的自己都乱了,大家给指点一下吧!

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

0 个回复

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