结构体和类的本质区别
0.区别.jpg值类型的赋值是深拷贝。
在swift标准库中为了提升性能,对于系统中的String、Array、Dictionary采取了Copy On Write技术,只有当被拷贝的数据发生变化时才进行深拷贝(联想OC中的copy)。
如果初始化后需要改变成员变量的值,class不必声明成可变类型,而struct必须声明称可变类型。
结构体
0.结构体.jpg0.结构体初始化器.jpg
必须保证所有的成员都有值。
如果某个成员是可为nil的,且是var类型则初始化时不必赋值
类和结构体的成员变量如果都是var类型且是可为空的则不必所有成员变量都初始化
一旦自定义了结构体的初始化器,那么系统就不再为这个结构体生成其他的初始化器。
0.结构体内存结构.jpg
结构体会自定为我们生成带有成员变量的初始化器,而类不会,需要我们手动添加
网友评论