美文网首页
swift 中数组是具有值语义的

swift 中数组是具有值语义的

作者: 90后的晨仔 | 来源:发表于2020-11-12 22:01 被阅读0次

例子1:如下边的例子,当 testX赋值给testY的时候,testX的值是不会发生改变的。在赋值的时候会自动把整个数组本地copy一份,所有对它的改变都不会影响调用者所持有的数组。

var testX = [1,2,3]
var testY = testX
testy.append(4)
print(testX) //[1, 2, 3]
print("========")
print(testY)//[1, 2, 3, 4]

例子2:Foundation 框架中NSArray如果要实现相同的作用需要进行如下处理:
错误处理方法

let a = NSMutableArray(array: [1,2,3])
let b:NSArray = a
a.insert(4, at: 3)
print(a)//(1,2,3,4)
print("=======")
print(b)//(1,2,3,4)

正确的方式是在赋值时,先手动进行复制:

let c = NSMutableArray(array: [1,2,3])
// 我们不想让 d 发生改变
let d = c.copy() as! NSArray
c.insert(4, at: 3)
d // ( 1, 2, 3 )”

相关文章

  • swift 中数组是具有值语义的

    例子1:如下边的例子,当 testX赋值给testY的时候,testX的值是不会发生改变的。在赋值的时候会自动把整...

  • Swift - 结构体优化- 写时复制

    我们知道Swift中推荐使用具有值语义的结构体,而不是具有可变性的引用语义. Swift标准库中Array结构体是...

  • 数组

    数组的值意义 Swift 数组具有值语义,它们从不会在不同的地方被共享使用(没有 共用的引用)不共享内存类型推断 ...

  • 【Swift进阶笔记】内建集合类型-数组

    可变性 数组和标准库中的所有集合类型一样,是具有值语义的 想要改变一个数组,必须使用NSMutableArray,...

  • Swift数组

    创建数组 数组是用来有序存储同样类型的值。同样的值可以在数组中不同的位置出现多次。 Swift中数组中存储的值类型...

  • 理解Array和NSArray的差异

    按值语义实现的Array 在Swift中,Array是按照值语义实现的,当我们复制一个Array对象时,会拷贝整个...

  • 利用Swift中的值语义

    Swift整体设计的一个非常有趣的方面是它围绕价值类型概念的集中性。大多数标准库的核心类型(例如String,Ar...

  • 2.2 Swift 3 理解Array和NSArray的差异

    同样是数组类型,Swift中的Array和Foundation中的NSArray有着截然不同的语义和用法。在这一节...

  • Swift:基础(十三)数组

    Swift 数组 Swift 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 ...

  • Swift中值类型和引用类型

    值类型 值类型,即每个实例保持一份数据拷贝。Swift 中,值类型的赋值为深拷贝(Deep Copy),值语义(V...

网友评论

      本文标题:swift 中数组是具有值语义的

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