static、class
协议中的类型方法、类型属性必须使用static定义
mutating
协议中的方法前加了mutating,遵守该协议的类实现协议中的方法时不用加mutating,而枚举、结构体需要加mutating。
protocol中的方法用mutating修饰,我们在实现该方法的时候在该方法内部就可以修改变自己的变量了。
协议的继承
一个协议可以继承其他协议
协议的组合
可以同时遵守多个协议
协议扩展
在协议扩展中实现协议中的某些方法,那么这些方法就是不必被遵守者实现的。
使用weak修饰代理
如果我们想要用weak修饰代理,那么这个代理必须是只能被类实现的,因为struct和enum是不需用weak修饰代理的。
为编译器显式地指明某个protocol只能由class来实现(加上class)。
protocol MyClassDelegate: class {
func method()
}
网友评论