swift 协议的写时拷贝
其实这只是协议中的一个小的知识点,但是个人觉得这是对协议的一种优化,可以拿来学习一下。 swift的协议概念: OC中也有协议,swift中的协议的作用与OC中基本一样,只是在写法上有一点区别。 我们使用 protocol关键字来定义一个协议。在一个协议中只能存放计算式属性以及方法的声明,而不能对他们进行定义。 协议一般和代理一起使用,协议只是声明一些方法名称和计算式属性,可以认为它就是一种约定,谁遵循了这种约定,谁就实现其中的方法和计算式属性。 关于代理,我们这里不做详述。 首先,我们来看看什么是“写时拷贝”? 写时拷贝 由于协议类型是一种抽象类型,swift在实现它的时候采用了一种十分灵活的机制——写时拷贝。 对于像枚举、结构体这种值类型的对象实例,即便用一个他们所遵循的协议去指向值类型的对象实例, 当协议类型自身或它所指向的对象实例任一方修改了存储式实例属性的值的时候,此时就会发生写时拷贝。 这时,swift会将协议类型对象分配一个新的存储空间,然后将它所指向的值类型的对象实例的当前状态拷贝过去。 概念有些抽象,我们来看看实例吧。 /* 协议是一种比较灵动的动态类型,根据为它所初...