【问题标题】:Cloning/Copying an NSMutableArray in Objective C在 Objective C 中克隆/复制 NSMutableArray
【发布时间】:2011-06-30 19:04:37
【问题描述】:

Objective-C 中如何将数组克隆或复制到其他数组中?

我想要一个函数,当传入 NSMutableArray 时,它会获取数组并用内容填充另一个数组。

就这么简单 someArray =passedInArray 吗?或者操作系统有一些 initWith 函数?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    这应该够用了

    [NSMutableArray arrayWithArray:myArray];
    

    另外,copy 方法可能也是如此

    [myArray copy];
    

    但是简单的赋值不会克隆任何东西。因为您只分配了一个引用(您的参数可能看起来像NSMutableArray *myArray,这意味着myArray 是一个引用)。

    【讨论】:

    • 在可变数组上调用副本将返回一个新的非可变数组。如果您想要另一个可变数组,请改为调用 mutableCopy。
    【解决方案2】:

    不介意,但您的问题似乎是 重复 deep-copy-nsmutablearray-in-objective-c;不过让我试试。

    是的,它不是那么简单,你必须更加小心

    /// will return a reference to myArray, but not a copy
    /// removing any object from myArray will also effect the array returned by this function
    -(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
        return [NSMutableArray arrayWithArray: myArray];
    }
    
    /// will clone the myArray
    -(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
        return [[NSMutableArray alloc] initWithArray: myArray];
    }
    

    这是文档文章Copying Collections

    【讨论】:

    • 您的意思是使用 initWithArray:copyItems:YES 作为第二种方法吗?就目前而言,我相信这两种方法是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多