什么是协议
协议用于统一方法和属性的名称,但是协议没实现,在其他语言通常叫做接口。
协议也是一种数据类型,就像类、结构体和枚举那样的数据结构。可以把它当做参数。它也可以是一个常量或者变量,唯一的区别是协议本身没有实现,它只有声明,实现是由其他遵循协议的对象来实现的。
当然,你也可以提前在协议扩展中定义协议的默认实现,不过这些默认实现并不属于协议本身,当符合协议扩展要求的对象遵守协议时,就可以免费获得协议的协议扩展中定义的默认实现。
协议使用步骤
- 协议的声明,像其他的数据类型的声明,只不过没有实现而已。
- 协议的扩展,可以指定扩展的适用对象,在扩展中定义默认的实现。
- 有类,结构体或者枚举表示遵守这个协议
- 遵守协议的数据结构类型来实现协议中声明的属性和方法,改写免费获得的默认实现(可选)
声明协议
格式:
protocol 协议:继承的协议1,继承的协议2 {
var 某个属性:类型 {get set}
func 某个方法(参数列表) -> 返回值类型
init (参数列表)
}