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

如何用swift編寫框架

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

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

狀態

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

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

簡單溶體

好的第三方庫應該實現為Cocoa Touch框架(實際內容是Header+動態鏈接庫)。而不是直接復制Swift副本並將其放入自己的項目中。本文以壹個簡單的項目為例,介紹如何科學使用。

目標描述

使用Swift創建壹個演示,並使用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。swift module/【arch】。Swiftmodule,但似乎沒有使用它,並且默認情況下不支持從Swift導入。IDE下的Swiftmodule文件,挺坑的。我希望未來的版本可以增加支持。

的。框架包含所有Swift標準庫的動態鏈接庫,朋友們可能會認為這會使編譯的App變得更大。事實上,您可以放心,任何Swift語言應用程序都將包含這些動態鏈接庫,並且只會包含壹個副本。這種方法對應用程序的最終大小幾乎沒有影響。

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