如何建立乙個純 Swift 模組

2021-09-11 12:59:42 字數 1584 閱讀 3911

swift是一門從零開始的創新的程式語言,用於ios,os x,watchos,和tvos應用的開發,它吸取了c以及objective-c的優點,且不受c相容性的限制。swift採用安全程式設計模型,並新增了許多新的特性來使程式設計更加簡單,更加靈活和有趣。swift基於成熟而且流行的cocoa和cocoa touch框架,這是我們重新定義了軟體開發方法的乙個好時機,

如果你已經開始接觸swift,你可能會考慮如何在swift專案中加入第三方庫,使專案執行得更好。railsware.com的移動開發人員,alex denisov,ios工程師和大量的開源粉絲,準備討論一下這個問題。

蘋果提供了一種機制通過框架來分發**,所以使用objc和swift**來自定義乙個框架庫是非常簡單的(對於ios也一樣)。接下來建立乙個純的swift模組,就像蘋果建立的swift標準庫和cocoa/cocoa touch橋接庫。

現在我們來建立乙個簡單的叫logger的swift模組,它只有乙個方法:log。這個swift模組至少要包含三個檔案,檔案列表如下:

logger.swiftmodule - 公共介面的定義檔案

logger.swiftdoc - 文件檔案

liblogger.a - 編譯後的庫檔案(可能是乙個動態庫,這取決於你的工程任務)

我們現在開始建立乙個logger的庫:

下面將使用"> "字首來例項化這個logger物件,並記錄一些日誌:

現在來建立liblooger.a檔案,命令如下:

xcrun swift -emit-library -emit-object logger.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-nameloggerar rcs liblogger.a logger.o

-emit-library表示生成動態鏈結共享庫,而使用-emit-object不僅會生成檔案還會生成包含main方法,所以你會得到乙個」duplicate symbol「的鏈結錯誤。

解決方法很簡單:執行時,同時加入-emit-object和-emit-library兩個引數,就像上面描述的命名一樣。

接下來建立logger.swiftdoc和logger.swiftmoudle:

xcrun swift -emit-modulelogger.swift -sdk$(xcrun --show-sdk-path --sdk macosx) -module-name logger

至此我們有了乙個完整的模組,可以新增到乙個真實地工程裡面了。建立乙個簡單地swift的工程,新增下面的這些檔案:

然後設定swift的"import paths"配置:

為了使你工程正常執行,你還需要匯入剛建立的logger模組:

瞧,程式成功執行了!

處理文件記錄是非常簡單的。新增文件記錄到模組裡面只需使用"///"來新增注釋即可,例如:

整合後你將在xcode的右邊看到文件記錄的相關資訊。

注意:要想整合並使用乙個新的模組,你需要重新啟動xcode。

這個方法有可能不適合常規的ios/osx開發,因為它必須建立和支援make/cmake file,這個生成是比較複雜的。但是如果你想建立乙個純swift模組,不使用任何obj-c**的話,那這就是很有用的方法。

如何建立乙個 Lua 模組

翻譯自 how to create a lua module lua程式語言中的乙個模組 module 是乙個包含函式和變數的 片段 它是乙個使用者庫.它是把你的 切分為多個檔案的一種有力方法.乙個模組用lua關鍵字require來載入.模組被編碼到乙個以.lua作為副檔名的檔案中,並且這個檔案必須...

如何建立乙個模組 如何起步建立乙個童裝品牌?

自從有了童裝創業的想法,腦海中蹦出無數想法。從0到1建立乙個品牌,首先要問清楚自身,理想中這將是乙個怎樣的品牌?展示出來是怎樣的形象?希望消費者對品牌產生怎樣的感受?最終實現品牌的什麼目標?這些問題,並不是一開始就能確定答案,也不會是一成不變。我們應該從建立品牌,到運營 維護品牌,都對這些問題保持思...

Swift 建立乙個tableview

最近學習了一下swift,學完了基本語法嘗試寫了乙個tableview,確實遇到好多坑,下面上 和大家交流交流 怎麼建立乙個程式就不說了。import uikit tips swift裡面的協議繼承直接這樣寫就好了 class viewcontroller uiviewcontroller,uita...