释放对象后需要分配'nil'是什么?

Aar*_*ron 11 iphone memory-management objective-c

我经常在使用后释放该对象

[myObject release];
Run Code Online (Sandbox Code Playgroud)

但我发现在一些在线教程中,他们在释放对象后分配了一个nil.喜欢

[myObject release];
myObject = nil;
Run Code Online (Sandbox Code Playgroud)

需要吗?

mar*_*ass 29

关于nil在释放之后将指针设置为是否是必要的,这是一个长期争论,但我认为它是一个好主意.

释放对象后,您持有的指针仍指向同一位置.如果您的发布已将保留计数设置为0,则将取消分配该对象.如果您尝试向解除分配的对象发送消息,则会收到EXC_BAD_ACCESS错误.但是,在设置为指针后向指针发送消息nil不会出错 - 它不会做任何事情.

争论的另一方面是,如果你要发送一个解除分配的对象,那么了解它并修复你的代码以确保它不会发生是很好的.

两个阵营都有聪明人.

  • +1指出不做的好方面 (2认同)