簡體   English   中英

Swift框架或Objective-c庫

[英]Swift framework or Objective-c library

我們的團隊需要更新一個用obj-c編寫的庫,該庫過去已經分發給其他iOS開發人員。 我們正在評估是否應在此更新中使用Swift框架。 我們所有人都希望使用swift,但由於潛在的開發人員可能在他們的項目中使用swift,obj-c或混合程序,因此希望了解如何采用swift。 在我們完成更新時,我們計划僅支持iOS8及更高版本。 非常感謝您的任何見解/建議。

我有一個用Objective-C編寫的90K loc庫,仍然基於MRC(但與ARC兼容)。 我花了一個星期的時間對方法名稱和注釋(例如__nullable)的頭文件進行了一些小的調整,以使代碼庫達到可以在Swift中編寫演示客戶端程序的狀態。 該演示程序看起來很自然。 集成是非常無縫的,ARC僅需解決一些細微的問題。 最重要的是,我不一定要轉換現有框架並將其從Objective-C重寫為Swift。 兩種語言完美地融合在一起,我們正在做相當復雜的設計,這些設計使用了整個OO設計模式,並廣泛使用了閉包(塊)。 Swift閉包被視為Objective-C塊,一切都可以完美地工作。 那就是幾百個類和幾千個方法。

事實證明,添加__nullable __nonnull批注對避免可選類型及其在整個過程中的顯式取消引用(很多類型的末尾帶有!)非常重要。 那是最大的變化。

不要改變正在起作用的東西。 您的框架對於Swift用戶而言將是原生的。

至少,我建議審核現有庫的可空性 ,因為這將為Objective-C框架提供更邏輯的Swift接口。

我不建議僅僅為了移植到Swift而移植到Swift,而僅當存在明顯優勢時才建議移植到Swift。 但是,編寫良好的Objective-C框架通常可以在Swift應用程序中完美使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM