在Objective-C中,在释放后将指针设置为nil是必要的吗?

22

这样做有什么问题吗?

NSString * string = [ [ NSString alloc ] init ];
...
[ string release ];

还是也加上

string = nil;

有价值吗?(除了最佳实践之外)


将其设置为 nil 会使 NSZombieEnabled 无效,我猜这可能是得不偿失的。如果有比我更有经验的人解释这一点会更好。 - ustun
3个回答

29

并非必需,但是这是一个很好的实践。如果您在发布后无意中引用它,会发生不好的事情,但在Objective C中引用nil并不会有任何危害。


好的,我也想到了,但我想确认一下是否有什么重要的东西我漏掉了。谢谢。 - CIFilter

3

在多线程应用程序中,将实例变量设置为nil比单线程应用程序更有用,因为在多个线程中,您无法保证实例变量仅在其释放之前被读取。

通常情况下,在单线程应用程序中我不会这样做,除非有其他强制性原因。


0

Objective-C实际上就是带有花哨预处理器的C语言。

在Objective-C中将指针设置为nil对曾经被指向的内容没有影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接