struct 和 class
2017-11-30 本文已影响17人
Vergil_wj
基本一样,都可以有方法,有变量,非常相似.
主要有两个区别:
struct 没有继承
struct是值类型,class是引用类型
值类型:
当你把它作为参数传入函数,把它放进数组,甚至赋值给另一个变量,它都会被拷贝.数组,Int,String,Dictionary都是结构体,他们在代码之间传递时候总是会被复制.那效率是不是很低?不,因为Swift在把这些结构体四处传递的时候,它不会把所有这些的每个比特都复制,它会在有人修改了它的值时候才进行实际拷贝.这叫做copy-on-write.
引用类型:
他们被存储在堆中,你保留指向它的指针,当你传递它的时候,你不会把对象四处传递,你传递的是指针.所以你可能有很多代码都拥有指向同一个对象的指针.