1

我有类似的问题:设置object = nil和[object release] VS [object release]和object = nil有什么区别?

NSMutableArray *myExampleArray = [[NSMutableArray alloc] init];
myExampleArray = nil;

我使用 iOS 5.0自动引用计数,所以实际上我没有释放任何对象。因此,如果我将其分配给 nil 是否等于 [myExampleArray release] ?

我知道我以后不能在不重新初始化的情况下使用 myExampleArray。那么下一个问题。清除此 NSArray的最佳方法是什么?

4

2 回答 2

7

是的,在 ARC 环境中,您永远不会调用 release。因此将 nil 分配给变量将释放对象。

在非 ARC 环境中,您会自行发布,因此对象会被销毁。但该变量仍将指向旧对象地址。但是已经没有对象了,所以EXC_BAD_ACCESS如果你稍后使用这个变量,你可能会遇到崩溃( )。如果您也将 nil 分配给它,那将不会发生。因为变量将不再指向旧的对象地址。

您的另一个问题:如果您稍后再次需要该数组,您可以调用removeAllobjectsNSMutableArray 来删除所有添加的对象,就像 Ankit Gupta 已经说过的那样。这将导致一个空数组,它仍然存在,因此您可以重用它。

于 2012-04-19T08:18:42.717 回答
3

不要为您的对象使用 Nil
试试这一行:

[myExampleArray removeAllobjects];
于 2012-04-19T07:51:21.993 回答