gpt4 book ai didi

ios - 重用时 NSMutableArray removeAllObjects 与 new

转载 作者:可可西里 更新时间:2023-11-01 05:40:22 25 4
gpt4 key购买 nike

在 ARC 下,removeAllObjectsNSMutableArray 上对 CPU 来说会比简单地执行 myArray = [NSMutableArray new] 更强烈(明确地单独释放对象) ; 让 ARC 在下一轮发布时捕获整个释放的内存块?

我可以用 2 段代码对此进行测试,但由于优化等原因,我真的只是对机制感到好奇。从 C 的角度来看,调用所有要释放的对象听起来更激烈,但也许 Objective-C 中的 dealloc 树对于 ARC 来说足够高效,可以在速度相等?

最佳答案

一些代码必须在 NSMutableArray 中循环遍历该数组,并在其所有非 nil 对象上调用 release。如果在 ARC 内部或 NSMutableArray 内部执行的代码之间存在差异,则应该不会引起注意,因为昂贵的部分不是循环开销,而是 release< 的实际调用 和它后面的潜在释放。

不过,还有一个更重要的区别:当您调用 removeAllObjects 时,数组会保留其内部存储空间,因此在您下次开始向其追加时它不必增加其内部大小。如果您的使用模式要求将大量项重复添加到同一个数组,调用 removeAllObjects 可能会为您节省一些分配/重新分配周期。

关于ios - 重用时 NSMutableArray removeAllObjects 与 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37072678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com