Swift学习:结构和枚举

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.可以定义:计算属性/方法/初始化器

你可能感兴趣的:(Swift学习:结构和枚举)