swift中的结构体和类

2020-09-07  本文已影响0人  梁森的简书

结构体和类的本质区别

0.区别.jpg

值类型的赋值是深拷贝。
在swift标准库中为了提升性能,对于系统中的String、Array、Dictionary采取了Copy On Write技术,只有当被拷贝的数据发生变化时才进行深拷贝(联想OC中的copy)。
如果初始化后需要改变成员变量的值,class不必声明成可变类型,而struct必须声明称可变类型。

0.rip.jpg

结构体

0.结构体.jpg
0.结构体初始化器.jpg
必须保证所有的成员都有值。

如果某个成员是可为nil的,且是var类型则初始化时不必赋值
类和结构体的成员变量如果都是var类型且是可为空的则不必所有成员变量都初始化

一旦自定义了结构体的初始化器,那么系统就不再为这个结构体生成其他的初始化器。


0.结构体内存结构.jpg

结构体会自定为我们生成带有成员变量的初始化器,而类不会,需要我们手动添加

0.类.jpg 0.类的初始化器.jpg
上一篇下一篇

猜你喜欢

热点阅读