美文网首页
swift中的值类型和引用类型

swift中的值类型和引用类型

作者: 梁森的简书 | 来源:发表于2020-08-31 16:37 被阅读0次
    0.数据类型.jpg

    swift将String、Array、Dictionary设计成了值类型。
    值类型相对于引用类型的优势:
    1.高效地使用内存,因为它是在栈上操作的
    2.线程安全

    值类型

    值类型被复制的时机是值类型的内容发生改变(copy on write)

    func test(_ arr: [Int]) {
     for i in arr { print(i) } 
    }
    var a = [1,2,3] 
    var b = a 
    let c = b test(a)
    

    上面的代码没有发生复制,因为值类型a的内容没有改变。

    var a = [1,2,3] 
    var b = a 
    b.append(5) // 此时 a 和 b 的内存地址不再相同
    

    上面的代码发生了复制,因为值类型b的内容发生了改变。
    (联想:copy对不可变字符串的修饰,如果字符串内容不变是浅拷贝,如果发生了变化是深拷贝)

    引用类型

    类就是一种引用类型,将赋值给一个新对象的时候,没有发生copy,而是多了一个对原对象的引用。

    相关文章

      网友评论

          本文标题:swift中的值类型和引用类型

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