當前位置:成語大全網 - 書法字典 - 如何用swift開發框架

如何用swift開發框架

目前有很多很棒的Swift第三方庫,比如JSON處理,HTTP訪問,UIView插件等等。

如何科學的引用這些第三方庫?

狀態

CocoaPods過於依賴Objective-C,因為它完全使用靜態鏈接解決方案。目前應該是官方回購提到的-Xlinker錯誤。我之前也遇到過這個問題,沒有解決辦法。除非手動執行ar,否則不使用ld和libtool。

小夥伴用子目錄方法引用代碼,看起來不錯,直接用git子模塊,看起來可維護。

簡單溶體

好的第三方庫應該實現為Cocoa Touch框架(實際內容是Header+動態鏈接庫)。而不是直接把Swift拷貝過來放到自己的項目裏。本文以壹個簡單的項目為例,介紹如何科學使用。

目標描述

用Swift創建壹個Demo,使用SwiftyJSON和LTMorphingLabel庫。

該項目的名稱是DemoApp。

創建工作區

使用任意名稱和位置創建工作區。這個工作區主要用於管理我們的項目和它所依賴的第三方庫。

創建演示應用程序

在Workspace中創建應用程序。因為是測試,所以我選擇了單視圖應用。

SwiftyJSON簡介

SwiftyJSON是壹個Cocoa Touch框架,可以直接使用。git克隆完成後,只需將項目添加到工作區。

嘗試操作發現。。最簡單、最準確的方法是將。xcodeproj文件直接從Finder到工作區。

引入LTMorphingLabel

LTMorphingLabel是壹個App Deme項目。標簽視圖的實現在壹個子目錄中。妳可以通過創建Cocoa Touch框架來引入這些文件。

當然妳也可以直接把目錄拖到我們的DemoApp裏面,但是太原始太粗暴了。

為應用程序添加依賴項

在DemoApp的“常規”選項卡中,添加鏈接的框架和庫。選擇兩個。工作區中的框架SwiftyJSON和LTMorphingLabel。

如果妳選擇。框架直接從其他項目而不是同壹個工作區,妳也可以在這裏添加嵌入式二進制文件。

使用

添加依賴項後,可以在DemoApp項目代碼中導入SwiftyJSON或導入LTMorphingLabel來使用相應的庫。同時,還可以使用命令+鼠標點擊的方法查看聲明代碼。

排除故障

更尷尬的是,其實按照上面的方法,LTMorphingLabel是無法正常使用的。如果查看錯誤消息,您會發現LTMorphingLabel-Swift.h的語法是自動生成的。編輯器可以找到。h文件並註釋這段奇怪的代碼。

看來目前Bridge Header和-emit-objc-header的實現還是有問題的。小夥伴們壹定要冷靜。

對於非工作區

如果不喜歡使用Workspace,也可以將第三方庫的編譯結果,壹個. framework目錄拖到項目文件中,然後添加嵌入的二進制文件。

評論

在創建Cocoa Touch框架的選項中,可以使用Swift代碼。此時編譯結果(默認)會包含module.modulemap文件,之前已經介紹過,Swift可以通過它使用第三方模塊。參考Swift的模塊系統。

事實上,這個解決方案走了很長的路,導出Projname-Swift。h通過Swift文件,然後導入module.modulemap模塊描述文件,然後通過Swift導入。

事實上。框架還包括Projname。swiftmodule/[arch]。Swiftmodule,不過好像沒用,默認不支持從Swift導入。IDE下的Swiftmodule文件,挺坑的。希望以後的版本可以增加支持。

的。framework包含了所有Swift標準庫的動態鏈接庫,朋友們可能覺得這樣會讓編譯後的App變大。其實妳可以放心,任何壹個Swift語言App都會包含這些動態鏈接庫,而且只包含壹個副本。這種方法對App的最終大小影響不大。

註:個人測試後發現,這個。swiftmodule可以以其他方式使用。繞過module.modulemap應該是更好的解決方案,但是命令行參數需要控制。

至於靜態鏈接庫,已經過時了。扔掉它。