创建: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。
+++++