Swift协议 发表于 2017-09-12 更新于 2021-08-01 分类于 Swift 协议可选实现Swift里标记某个方法为可选实现时,需要在协议前添加@objc,并且在可选方法前添加@objc optional.其实也是为了跟OC兼容.eg: 123456789@objc protocol Iterator { func first() -> AnyObject? func next() -> AnyObject? @objc optional func isDone() -> Bool func currentItem() -> AnyObject?} 判断某个实例是否实现了协议里的可选方法: 12345if i.isDone?() != nil { print("\(i) 实现了方法isDone")} else { print("\(i) 没实现方法isDone")} 因为isDone是可选实现方法,所以调用时需要加?,这样就转为optional chaining处理,如果方法的返回值不为nil,则说明对象实现了协议的可选实现方法. 觉得文章有帮助可以打赏一下哦! 打赏 微信支付