标签:协议 protocol optional 方法 objc func SomeProtocol swift
@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,方法,objc,func,SomeProtocol,swift 来源: https://www.cnblogs.com/huangzs/p/16649759.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。