在 swift 如何定义可选方法?
在 OC 中有 @optional 关键字,但在 swift 中使用 optional 关键字时,会有警告,提示我们要使用@objc,这很不 swift。而且,被标记为@objc 的协议,只能被 class 实现,不能用于结构体和枚举。
在 swift 中可选协议,可以使用扩展协议实现。具体来说分为两步
- 在协议中定义方法
- 扩展协议,在扩展协议中给出默认实现
以上两步就可以了。
而有默认实现的协议方法就是可选方法。
举个例子:
protocol phoneAndVerfiDelegate:AnyObject {
func closeButtonDidClick()
// 扩展协议默认实现了此方法,此方法为可选协议
// 如果代理实现了此方法,会覆盖默认实现
func changePasswordSuccess(_ userinfo:[String:String]?)
}
extension phoneAndVerfiDelegate {
func changePasswordSuccess(_ userinfo:[String:String]?) {
}
}
网友评论