3

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

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

[array removeAllObjects];

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

谢谢

例如,如果我的 NSMutable 数组的大小为20mb ,其中包含 10.000 个元素……如果我使用 removeAllObjects 方法……它的大小是否为 0mb?

4

3 回答 3

4

是的,它释放所有对象,它不会泄漏。(当然,它不会显式地释放它们——只有当数组持有对它们的唯一引用时,它们才会被释放。)

于 2013-07-16T14:18:22.857 回答
3

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

removeAllObjects对于大量对象,将比initWithCapacity. 当对象数量达到限制时,真正的性能差异将不得不避免增加数组。

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

于 2013-07-16T14:41:52.710 回答
0

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

于 2013-07-16T14:17:21.243 回答