闡述
新公司,新層次,接觸到新的東西。進入喜馬後,由於主站APP與當前APP技術基礎不太一致,
故代碼從設計時就需要考慮同時支持兩種環境(Objective-C與Swift)。
之前呢,只是單純爲指定環境開發,如在Swift環境下以Swift爲主設計並封裝代碼。
一般來說也就是說單純使用 Swift 的 Protocol 進行相互的約定。現在則需要考慮一下,如何反相支持Objective-C了。
記錄
1 只針對Swift環境
通過給 Protocol 添加 extension 默認方法實現的方式,實現可選效果。這樣遵守協議的類無需實現可選方法。
(不過本質上還是通過 extension 實現了協議對應方法)
2 支持Swift環境和Objective-C環境
通過使用@objc 修飾 Protocol, 並且在要省略的方法前加 @objc optional 來實現可選效果。
注意:
1 使用 @objc 修飾的 Protocol 只能被class實現了,對於struct 、enum 類型來說就不支持了。
2 @objc optional 修飾的範圍只能是當前行(如果當前行後續無內容,則延伸至下一行,不會同時修飾多行函數)
資料
1 https://www.jianshu.com/p/66ec104668b0
2 https://swifter.tips/objc-protocol/