enum: Swift中的枚举是为一组有限种可能性的相关值提供的通用类型(在C/C++/Objective-C中,枚举是一个被命名的整型常数的集合);使用枚举可以类型安全并且有提示性地操作这些值。 struct: 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体是一种值类型的数据结构,在Swift中常常使用结构体封装一些属性甚至是方法来组成新的复杂类型,目的是简化运算。
- 枚举、结构体、类的共同点: 1,定义属性和方法; 2,下标语法访问值; 3,初始化器; 4,支持扩展增加功能; 5,可以遵循协议;
- 类特有的功能: 1,继承; 2,允许类型转换; 3,析构方法释放资源; 4,引用计数;
- 类是引用类型 引用类型(reference types,通常是类)被复制的时候其实复制的是一份引用,两份引用指向同一个对象。所以在修改一个实例的数据时副本的数据也被修改了(s1、s2)。
- 枚举,结构体是值类型 值类型(value types)的每一个实例都有一份属于自己的数据,在复制时修改一个实例的数据并不影响副本的数据。值类型和引用类型是这三兄弟最本质的区别。
ps:
- 什么时候该用值类型: 要用==运算符来比较实例的数据时 你希望那个实例的拷贝能保持独立的状态时 数据会被多个线程使用时
- 什么时候该用引用类型(class): 要用==运算符来比较实例身份的时候 你希望有创建一个共享的、可变对象的时候