佳为好友

原:对象在释放的时候,一定要将引用自身为的delegate对象设置成nil

创建:2011.11.27

例如,如果A是B的delegate。那么在A的dealloc里面一定要设置 b.delegate = nil;然后在释放b。即
- (void)dealloc {
   b.delegate = nil;
   [b release];
   ......
}

虽然在大多数情况下,[b release]都会导致b直接被释放了,因此是否将b的delegate设置为nil都不影响结果。
但是,随着程序的变化,难保某一天A被释放之后,B没有被释放,那么当b在调用delegate的函数的时候,可能就出现crash了。

今天我就遇到了这样的情况,因为我执行了一个NSNotification,其中b作为参数传入了。此时b就被另外保存了,进而引起了bug。

+++++

posted on 2012-12-29 11:10 佳为好友 阅读(254) 评论(0)  编辑 收藏 引用 所属分类: 非UI


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2012年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(1)

随笔分类

搜索

最新评论

评论排行榜