我想理解为什么这样做会很有用(假设先前已经分配了“对象”):
[object release];
object=nil;
求助,
的Stephane
答案 0 :(得分:5)
即使您释放了一个对象,您的变量仍然会指向某个东西。它指出的是未定义的。它仍然可以指向旧对象,或者指向内存中的某个点。将其设置为nil可以避免向它指向的任何内容发送消息,并防止出现错误(消息传递无效)。
以下是一个更好地说明问题的答案:Setting pointers to nil, objective-c
答案 1 :(得分:1)
这主要与多线程有关,如果另一个线程试图访问您释放的对象并设置为nil
它不会崩溃。您可以向nil
对象发送消息,它将不执行任何操作。
但如果它刚刚被释放,那么您正在向已解除分配的对象发送消息,您的应用程序将崩溃。
这是很好的阅读材料:
如果你投票,请告诉我们原因。
答案 2 :(得分:1)
如果您刚刚发布它,object
仍将指向之前的内存地址。如果您将其检查为nil(object == nil
),则会返回NO
。最好在发布后确保它指向nil
。