我需要知道 NSArray 或 NSMutableArray 的 removeAllObjects 方法是否释放内存。
如果我的数组有 10000 个元素。我可以使用
[array removeAllObjects];
释放内存并用其他元素重新加载它?或者它泄漏内存?
谢谢
例如,如果我的 NSMutable 数组的大小为20mb ,其中包含 10.000 个元素……如果我使用 removeAllObjects 方法……它的大小是否为 0mb?
我需要知道 NSArray 或 NSMutableArray 的 removeAllObjects 方法是否释放内存。
如果我的数组有 10000 个元素。我可以使用
[array removeAllObjects];
释放内存并用其他元素重新加载它?或者它泄漏内存?
谢谢
例如,如果我的 NSMutable 数组的大小为20mb ,其中包含 10.000 个元素……如果我使用 removeAllObjects 方法……它的大小是否为 0mb?
是的,它释放所有对象,它不会泄漏。(当然,它不会显式地释放它们——只有当数组持有对它们的唯一引用时,它们才会被释放。)
NS[Mutable]Array 是对象引用的集合。调用-removeAllObjects
nils 那些引用。阵列本身使用的容量和内存保持不变。在 NSMutableArray 的情况下,这些引用可以被重用以指向其他对象。NSArray 缺少该方法-removeAllObjects
,因为它不可变。
removeAllObjects
对于大量对象,将比initWithCapacity
. 当对象数量达到限制时,真正的性能差异将不得不避免增加数组。
正如其他人指出的那样,只有在没有对它们的强引用时才会释放这些对象。
不,它不会泄漏对象。它与单独删除每个对象相同,只是它更方便、更快捷。