gpt4 book ai didi

objective-c - subarrayWithRange 在不可变数组 (NSArray) 上执行时是否创建副本?

转载 作者:行者123 更新时间:2023-12-04 07:01:00 27 4
gpt4 key购买 nike

假设我有一个不可变的 NSArray 并且想要创建几个子数组。我可以在原始数组上调用 subarrayWithRange 并获得一个新的 NSArray。新副本是否与旧副本共享内存区域?

在最坏的情况下,我可能最终会为原始数组的每个元素创建一个子数组(从该元素开始并在原始数组的末尾结束),因此这在线性和方形内存使用模式之间产生了差异.

最佳答案

不幸的是,Apple 的实现不是开源的,所以我们不能确定。但是,从简单的测试来看,它似乎确实创建了子数组的新副本。

虽然您认为这可能导致方形内存使用模式是对的,但在某些情况下它也是有效的。想象一下,您有一个非常大的数组,而您只想要一个小的子数组。如果子数组重用后端数组,则不会释放大数组。

关于objective-c - subarrayWithRange 在不可变数组 (NSArray) 上执行时是否创建副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851059/

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