2017-06-06 197 views
0

我正在構建一個新的框架。該項目將被編碼爲Swift語言,但使用此框架的客戶可以自由使用swift或Objective-C框架。 問題是我該如何開始。可能有許多問題,如使用SWIFT代碼結構Swift和Objective C項目的Swift框架

  • ,但它不能在 目標C框架提供。
  • 自選缺少目標C
  • 即使我 編寫組不同斯威夫特和Objective C文件的,我將如何 它們映射到不同的框架,在同一項目中。
  • 作爲rawValue使用非Int的枚舉不能使用。
  • 元組是行不通的

我知道已經有解決這個幾個問題,但沒有任何滿意的答覆。

PS - 任何鏈接到一個教程或博客就太

+0

您將無法使用枚舉的完整功能。 – Mozahler

+0

@Mozahler - 你是對的,更新了問題 –

回答

1

我這樣做,並得到了一些意想不到的結果超級有用的:我有麻煩集成在斯威夫特應用程序的框架。 Objective-C的工作很好。 你在這裏提到了一些注意事項。

我建議在Objective-C中使用所有功能編寫測試應用程序時迭代執行此操作。這樣,如果有一些功能不能很好地跨越Swift到Objective-C的邊界,它會盡早被發現。

你有關的問題的話一般都是用一個小小的例外正確:自選沒有從Objective-C的缺失,它們顯示爲變量和方法參數nullable/nonnull修飾。雖然這不能完全取代可選項,但它有助於在流程的早期檢測問題。

這裏是我發現了其他一些問題隨機列表:

斯威夫特ErrorNSError在Objective-C使用之間的橋接。轉換並不總是一帆風順,所以最好在導出的代碼中使用NSError

如果您在框架混合Objective-C和斯威夫特,你不能使用橋接報頭,而是採用modulemap文件,這往往把相當大的和複雜的。

由於您不能在框架內嵌入框架,因此您必須確保應用程序爲其目標設置了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES標誌。這必須在文檔中明確指出。另外,爲框架創建胖庫時,必須從分佈式SDK中去除這些文件。

而且,正如我在一開始所說的,在Swift應用程序中使用最終的混合語言框架仍然沒有成功。

希望,這將添加到開發庫時要考慮的事項列表中。