我需要知道NSArray或NSMutableArray的removeAllObjects方法是否会释放内存。
如果我的数组有10000个元素。
可以使用吗?[array removeAllObjects];
释放内存并用其他元素重新加载?或者它会泄漏内存?
由于
实施例 如果我的NSMutable数组的大小是20mb,例如10.000个元素......如果我使用removeAllObjects方法......它的大小是0mb吗?
答案 0 :(得分:4)
是的,它释放所有对象,它不会泄漏。 (当然,它并没有明确地释放它们 - 如果数组只保留它们的唯一引用,它们就会被释放。)
答案 1 :(得分:3)
NS [Mutable] Array是对象引用的集合。调用-removeAllObjects
nils这些引用。阵列本身使用的容量和内存保持不变。对于NSMutableArray,可以重用这些引用以指向其他对象。 NSArray缺少方法-removeAllObjects
,因为它不可变。
removeAllObjects
会比initWithCapacity
慢一些。真正的性能差异是当对象数量达到极限时必须避免增长数组。
正如其他人所指出的那样,只有在没有更多强引用的情况下才会释放这些对象。
答案 2 :(得分:0)
不,它不会泄漏物体。它与单独删除每个对象相同,只是它更方便,更快。