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

如果我的数组有10000个元素。
我可以使用

[array removeAllObjects];

释放内存并重新加载其他元素?还是泄漏内存?

谢谢


,例如,如果我的NSMutable数组的大小为20mb(例如具有10.000个元素)...如果我使用removeAllObjects方法...其大小将为0m​​b吗?

最佳答案

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

对于许多对象,removeAllObjects将比initWithCapacity慢一些。真正的性能差异是必须避免在对象数达到限制时增大数组。

正如其他人指出的那样,只有在没有更多对它们的强引用时才释放对象。

10-04 19:09