NSMutableArray *myExampleArray = [[NSMutableArray alloc] init];
myExampleArray = nil;
我使用iOS 5.0 自动引用计数,所以实际上我不会释放任何对象。所以,如果我将它指定为nil,它是否等于[myExampleArray release]?
我知道我以后不能使用myExampleArray而不重新初始化它。接下来的问题。 清除此NSArray的最佳方式是什么?
答案 0 :(得分:7)
是的,在ARC环境中,您永远不会调用release。因此,为变量分配nil将释放对象。
在非ARC环境中,您可以自行执行发布,因此对象会被破坏。但变量仍然指向旧的对象地址。但是没有任何对象,所以如果稍后使用该变量,可能会发生崩溃(EXC_BAD_ACCESS
)。如果你也给它指定了nil,那就不会发生。因为变量不再指向旧的对象地址。
你的另一个问题:
如果稍后再需要该数组,可以在NSMutableArray上调用removeAllobjects
来删除所有添加的对象,就像Ankit Gupta已经说过的那样。这将导致一个空数组,它仍处于活动状态,因此您可以重复使用它。
答案 1 :(得分:3)
不要将Nil用于您的对象
试试这一行:
[myExampleArray removeAllobjects];