Swift 將協(xié)議(protocol)中的部分方法設(shè)計成可選(optional)

@optional@required 是 Objective-C 中特有的關(guān)鍵字。
Swift中,默認(rèn)所有方法在協(xié)議中都是必須實現(xiàn)的。而且,協(xié)議里方法不可以直接定義 optional。先給出兩種解決方案:

  • 在協(xié)議和方法前都加上 @objc 關(guān)鍵字,然后再在方法前加上 optional 關(guān)鍵字。該方法實際上是把協(xié)議轉(zhuǎn)化為Objective-C的方式然后進(jìn)行可選定義。示例如下:
@objc protocol SomeProtocol {
  func requiredFunc()
  @objc optional func optionalFunc()
}
  • 用擴(kuò)展(extension)來規(guī)定可選方法。Swift中,協(xié)議擴(kuò)展(protocol extension)可以定義部分方法的默認(rèn)實現(xiàn),這樣這些方法在實際調(diào)用中就是可選實現(xiàn)的了。示例如下:
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”)
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容