gpt4 book ai didi

objective-c - 使用原始元素的可变副本复制 NSArray

转载 作者:太空狗 更新时间:2023-10-30 03:23:11 27 4
gpt4 key购买 nike

我正在一个类中创建一个字典数组。我想将该数组的副本返回给任何其他需要它的对象。传递给其他对象的这个副本需要在不修改原始对象的情况下进行修改。

所以我在我的类的一个 getter 方法中使用以下内容来保存“master”数组:

[[NSMutableArray alloc] initWithArray:masterArray copyItems:YES];

然而,这似乎使所有内部的字典都不可变。我怎样才能避免这种情况?

我想我在这里遗漏了一些东西。任何帮助将不胜感激!

最佳答案

您可以采用的另一种方法是使用 CFPropertyListCreateDeepCopy() 函数(在 CoreFoundation 框架中),为 mutabilityOption 参数传入 kCFPropertyListMutableContainers。代码如下所示:

NSMutableArray* originalArray;
NSMutableArray* newArray;

newArray = (NSMutableArray*)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)originalArray, kCFPropertyListMutableContainers);

这不仅会创建字典的可变副本,还会递归地为这些字典包含的任何内容创建可变副本。请注意,这仅在您的字典数组仅包含有效属性列表(数组、数字、日期、数据、字符串和字典)的对象时才有效,因此这可能适用于您的特定情况,也可能不适用。

关于objective-c - 使用原始元素的可变副本复制 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194010/

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