@optional 和 @required 是 Objective-C 中特有的关键字。
Swift中,默认所有方法在协议中都是必须实现的。而且,协议里方法不可以直接定义 optional
。先给出两种解决方案:
- 在协议和方法前都加上
@objc
关键字,然后再在方法前加上optional
关键字。该方法实际上是把协议转化为Objective-C的方式然后进行可选定义。示例如下
@objc protocol SomeProtocol { func requiredFunc() @objc optional func optionalFunc() }
- 用扩展(extension)来规定可选方法。Swift中,协议扩展(protocol extension)可以定义部分方法的默认实现,这样这些方法在实际调用中就是可选实现的了。示例如下:
protocol SomeProtocol { func requiredFunc() func optionalFunc() } extension SomeProtocol { func optionalFunc() { print(“Dumb Implementation”) } } Class SomeClass: SomeProtocol { func requiredFunc() { print(“Only need to implement the required”) } }
标签:协议,protocol,optional,方法,func,SomeProtocol,swift From: https://www.cnblogs.com/huangzs/p/16649759.html