swift 协议

68 阅读1分钟

协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开)

  1. 协议中定义方法时不能有默认参数值 默认情况下,

  2. 协议中定义的内容必须全部都实现

  3.  也有办法办到只实现部分内容,

  4. 协议定义属性必须var

  5. 实现协议时的属性权限要不小于协议中定义的属性权限 

  6. 协议定义get、set,用var存储属性或get、 set计算属性去实现 

  7.  协议定义get,用任何属性都可以实现

  8. 为了保证通用,协议中必须用static定义 类型方法、类型属性、类型下标

  9. 只有将协议中的实例方法标记为mutating 才允许结构体、枚举的具体实现修改自身内存 类在实现方法时不用加mutating,枚举、结构体才需要加mutating

  10. 协议中还可以定义初始化器init  (非final类实现时必须加上required)

  11. 如果从协议实现的初始化器,刚好是重写了父类的指定初始化器 那么这个初始化必须同时加required、 override

枚举遵循CaseIterable协议支持遍历 

enum Season : CaseIterable {
    case spring,summer,autumn,winter
}  for season in Season.allCases {
            print(season)
        }

CustomStringConvertible