应该是 谁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的值是什么呢?
说的自己都乱了,大家给指点一下吧!
|