美文网首页Swift之家
Swift 字符串、数组拷贝问题

Swift 字符串、数组拷贝问题

作者: 小小土豆dev | 来源:发表于2019-01-29 23:36 被阅读0次

    本文只介绍 Swift 中的拷贝和 OC 中的拷贝有哪些不一样的地方,哪些需要我们注意的地方。如果你想更进一步了解深、浅拷贝问题,请点击iOS-深复制(mutableCopy)与浅复制(copy)

    字符串之间拷贝

    Swift 中的字符串是值类型。如果你创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。

    Swift 代码:当我们改变 copyObj2 的值后,你会发现并不会影响copyObj1。

    var copyObj1 = String("copyObj1")

    var copyObj2 = copyObj1

    copyObj2 = "copyObj2";

    // copyObj2 --> copyObj2

    // copyObj1 --> copyObj1

    OC 代码:OC 中的字符串对象是引用类型。当我们改变 copyObj2 的值后,你会发现 copyObj1 的值也会改变。

    NSString *copyObj1 = [[NSString alloc] initWithString:@"copyObj1"];

    NSString *copyObj2 = copyObj1;

    copyObj2 = @"copyObj2";

    // copyObj2 --> copyObj2
    // copyObj1 --> copyObj2

    数组之间拷贝

    Swift数组之间拷贝是:值拷贝

    var x = [1,2,3]

    var y = x

    y.append(4)

    // y --> [1, 2, 3, 4]

    // x --> [1, 2, 3]

    OC数组之间拷贝是:引用拷贝

    let a = NSMutableArray(array: [1,2,3])

    // 我们不想让 b 发生改变

    let b: NSArray = a

    // 但是事实上它依然能够被 a 影响并改变

    a.insert(4, at: 3)

    // b --> ( 1, 2, 3, 4 )

    相关文章

      网友评论

        本文标题:Swift 字符串、数组拷贝问题

        本文链接:https://www.haomeiwen.com/subject/zpsxsqtx.html