美文网首页
iOS知识点-16. 用Swift 将协议(protocol)中

iOS知识点-16. 用Swift 将协议(protocol)中

作者: 萌小奇 | 来源:发表于2018-12-17 09:44 被阅读16次
Swift vs. Objective-C
  1. 用Swift 将协议(protocol)中的部分方法设计成可选(optional),该怎样实现?

@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”)
*   }
* }
上一题 目录 下一题

相关文章

网友评论

      本文标题:iOS知识点-16. 用Swift 将协议(protocol)中

      本文链接:https://www.haomeiwen.com/subject/rzoccqtx.html