如何在Swfit中定义可选方法
可选方法的声明
Swfit中的所定义的协议,一旦遵守必须实现所有协议方法,如果做到OC一样定义可选方法呢?
-
声明协议时前面加上
@objc
,表示这是一个OC类型的协议
,这个协议可以只能被OC的类所遵守
,OC类型的协议所继承
-
另外,可选方法前像OC一样加上
optinal
即可/* 注意,@objc */ @objc protocol KLXMultiDropDownMenuDelegate: NSObjectProtocol { // 每次展开/收起之前调用,通过multiDropDownMenu.bounds.height获取展开/收起后的高度 /* 注意optional修饰 */ optional func multiDropDownMenuWillChangeBounds(multiDropDownMenu: KLXMultiDropDownMenu) }
执行可选方法
-
执行可选方法前,要向OC一样对其进行
判断
,方法就是函数指针
,判断其是否为nil
即可/* 如果代理实现了可选方法(方法不为nil),就执行 */ if self.delegate?.multiDropDownMenuWillChangeBounds != nil { self.delegate?.multiDropDownMenuWillChangeBounds!(self) }
总结
- 对于Swift类型的协议,其所有方法都是
必选方法
,一旦遵守必须实现
- 带
@objc
修饰的协议是OC类型的协议,可以定义可选方法
(PS:UIKit / Foundation
框架内的协议都是OC类型的协议)
网友评论