1.结构 struct
1.1.Struct 与 Class
-
相同点
- 都可以定义:属性\方法\下标\初始化器
- 都支持类型扩展\协议
不同点
Struct | Class |
---|---|
值类型 | 引用类型 |
不支持面向对象 | 支持面向对象 |
定义轻量级数值类型 | 设计丰富关系的组件系统 |
有传参拷贝成本 | 有 ARC 管理成本 |
不支持继承和多态 | 支持继承和多态 |
有默认成员初始化器 | 必须自己定义初始化器 |
不支持析构器 | 支持析构器 |
实例在栈上,不参与 ARC | 实例在堆上,由ARC 负责释放 |
不支持引用相等比较 | 支持引用相等比较 |
注意:不要在 struct 内定义引用类型属性
2.枚举 enum
2.1.用于定义一组相关的值成员
enum Color1{
case Red
case Blue
}
enum Color2{
case Red,Blue
}
var c1 = Color1.Blue
var c2:Color2
c2 = .Red
2.2.属于值类型,具有拷贝语义
2.3.可以用 switch-case(必须包括所有值 或者 default:)
2.4.可以指定原始值
enum WeekDay:Int{
case Monday = 1,Tuesday
}
var c1 = Color1.Blue
var c2:Color2
c2 = .Red
var day:WeekDay?
day = WeekDay(rawValue: 2)
var data = WeekDay.Tuesday.rawValue
2.5.支持关联值
2.6.可以定义:计算属性/方法/初始化器