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

原:对象在释放的时候,一定要将引用自身为的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。

+++++

你可能感兴趣的:(原:对象在释放的时候,一定要将引用自身为的delegate对象设置成nil)