1 struct是值类型,class是引用类型:
值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量.值类型包括结构体 (数组和字典),枚举,基本数据类型 (boolean, integer, float等).
引用类型的变量存储对他们的数据引用,对一个变量操作可能影响另一个变量.
二者的本质区别:struct是深拷贝;class是浅拷贝。
2 property的初始化不同:
class 在初始化时不能直接把 property 放在默认的 constructor 的参数里,而是需要自己创建一个带参数的 constructor;而struct可以,把属性放在默认的 constructor 的参数里。
3 变量赋值方式不同:
struct是值拷贝;class是引用拷贝。
4 immutable变量:
swift的可变内容和不可变内容用var和let来甄别,如果初始为let的变量再去修改会发生编译错误。struct遵循这一特性;class不存在这样的问题。
5 mutating function:
struct 和 class 的差別是 struct 的 function 要去改变 property 的值的时候要加上 mutating,而 class 不用。
6 继承:
struct不可以继承,class可以继承。
7 struct比class更轻量:
struct分配在栈中,class分配在堆中。
网友评论