iOS 記錄之 Swift協議可選方法(多環境)

闡述

新公司,新層次,接觸到新的東西。進入喜馬後,由於主站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/

發佈了70 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章