- swift中定义协议同oc中类似,也是在类前定义就行
@objc protocol VisitorViewDelegate:NSObjectProtocol { //点击注册按钮 optional func visitorViewDidRegisterBtnClick(visitView: VisitorView) //点击登录按钮 optional func visitorViewDidLoginBtnClick(visitView:VisitorView) }
- 代理属性需要设定为weak,防止循环引用
weak var delegate:VisitorViewDelegate?
- 在调用代理方法时,代理作为可选属性,已经帮我们预防代理不存在的可能
- 我们还需要借助可选属性来预防方法未实现
- 当然在确定实现的前提下可以解包
///注册handle @objc private func registerClick(){ delegate?.visitorViewDidRegisterBtnClick!(self) } ///登录handle @objc private func loginClick(){ delegate?.visitorViewDidLoginBtnClick?(self) }
Swift之协议( protocol)
最新推荐文章于 2022-07-27 18:51:00 发布