2017-04-06 43 views
2

我開始從頭開始編寫SDK。我不確定是否應該用Swift或Objective-C編寫它。我覺得在許多方面Swift比Objective-C更好,但我的主要問題是 - Swift動態庫會支持舊版Swift嗎?假設我在Swift 3.0中編寫動態庫,是否可以在使用Swift 2.2的項目中使用該動態庫?我在我正在閱讀的文章中發現這一點Swift動態庫向後兼容較舊的swift版本項目

動態庫是可執行的代碼塊,可以鏈接到應用程序的 。此功能允許當前的Swift應用程序隨着時間的推移將 與更新版本的Swift語言鏈接起來。

這是否意味着我將能夠在使用Swift 2.2的項目中運行Swift 3.0中構建的動態庫?我也發現了這個在Apple documentation

首先,雨燕2.3和斯威夫特3不是二進制兼容的讓你的應用程序的 整個代碼庫需求回暖斯威夫特的一個版本。

我覺得這與第一個說法相矛盾。我知道在Swift中使用橋接頭來導入Objective-C庫非常簡單,對於相反的場景,它是否也適用?在嘗試使Swift庫與Objective-C項目一起工作時,是否會遇到任何問題或障礙。我找不到任何解決向後兼容問題的答案或文章。任何幫助深表感謝。謝謝!

TLDR:是否使用雨燕的舊版本或項目在Objective-C

回答

2

簡單地說,第一個引用的陳述是虛假的(目前)項目,斯威夫特3(或更高)兼容的內置動態庫。

Swift ABI(應用程序二進制接口)未定稿。 ABI是關於函數調用外觀,變量和引用如何存儲在實際機器中的一系列約定。在最終完成之前,應用程序中的所有Swift模塊都必須使用相同版本的Swift進行編譯。

有關雨燕ABI的更多信息,請參閱Swift ABI Manifesto.

+0

@ ebby94雨燕ABI宣言是相當細緻https://github.com/apple/swift/blob/master/docs/ABIStabilityManifesto.md – JeremyP

+0

謝謝爲鏈接! – ebby94