swift 协议用法归纳
- 协议中可以定义方法、属性以及下标的声明
- 协议可以被类、结构体、枚举遵守,且可同时遵守多个协议
- 协议中的方法参数不能有默认值
- 协议中定义属性时必须是var定义,必须有get关键字,set关键字非必须
var l: Int {
get} //只读
var s: Int {
get set} //读写
- 结构体中遵守的协议方法的方法体重如果要修改结构体某一属性的值,那协议中的对应方法必须用mutating关键字修饰。类不用;枚举未进行测试
- 协议中定义的初始化方法,类遵守时初始化方法前必须加require关键字(如果这个初始化方法正好重写了父类的还要额外加上override关键字)。结构体遵守的协议中不能有初始化方法(原因可能是系统在为自定义初始化方法时系统会默认添加两个初始化方法)。枚举编译会报错
注:如果类被final修饰了可以不用require关键字
protocol P {
func p(