为什么在释放物体后使用'nil'

时间:2011-12-28 09:31:22

标签: objective-c release

有时我在objective-c中看到了这种类型的编码。为什么在释放后将imageView设置为nil。

 - (void)dealloc {
    [_imageView release];
    _imageView = nil;
    [super dealloc];
 }

3 个答案:

答案 0 :(得分:5)

确保您不会尝试重复使用刚刚发布的对象。

通过将其设置为nil,您可以确保将来发送给它的任何消息(标准nil对象的行为)而不是导致问题。

答案 1 :(得分:2)

只是因为这是安全的做法。

在dealloc中,除非你使用线程,否则它没有多大意义,但是每次你将nil分配给一个对象时(除非它是一个属性),这样做总是好的。

答案 2 :(得分:1)

据我了解,在dealloc中没有必要。但是,当在任何其他方法中释放对象时,指针仍将保留,但它指向的对象将不再存在,从而在向其发送消息时导致崩溃。

通过将指针设置为nil,您可以确保发送给它的任何消息都将被忽略,而不是使应用程序崩溃(或导致奇怪的行为)。