NSArray或NSMutableArray的removeAllObjects方法是否释放内存?

时间:2013-07-16 14:15:19

标签: ios objective-c memory-management memory-leaks nsarray

我需要知道NSArray或NSMutableArray的removeAllObjects方法是否会释放内存。

如果我的数组有10000个元素。

可以使用吗?
[array removeAllObjects];

释放内存并用其他元素重新加载?或者它会泄漏内存?

由于

实施例 如果我的NSMutable数组的大小是20mb,例如10.000个元素......如果我使用removeAllObjects方法......它的大小是0mb吗?

3 个答案:

答案 0 :(得分:4)

是的,它释放所有对象,它不会泄漏。 (当然,它并没有明确地释放它们 - 如果数组只保留它们的唯一引用,它们就会被释放。)

答案 1 :(得分:3)

NS [Mutable] Array是对象引用的集合。调用-removeAllObjects nils这些引用。阵列本身使用的容量和内存保持不变。对于NSMutableArray,可以重用这些引用以指向其他对象。 NSArray缺少方法-removeAllObjects,因为它不可变。

对于大量对象而言,

removeAllObjects会比initWithCapacity慢一些。真正的性能差异是当对象数量达到极限时必须避免增长数组。

正如其他人所指出的那样,只有在没有更多强引用的情况下才会释放这些对象。

答案 2 :(得分:0)

不,它不会泄漏物体。它与单独删除每个对象相同,只是它更方便,更快。