2015-09-08 26 views
4

我一直在使用該命令創建一個新雨燕的lib莢:莢LIB創建MixSwiftObjectiveC從https://guides.cocoapods.org/making/using-pod-lib-create.html如何在一個pod庫中混合使用Swift和Objective-C?

發現在這種吊艙LIB我需要使用形式,它在Objective-C代碼。 如果我將有一個單獨的「正常」項目,我只是將頭文件中的導入包括在內... ... ... ... -Bridging-Header.h。 是否有一個相同的pod lib? Swift和Objective-C可以在一個pod庫中混合使用嗎?

正如我創造了這個github上的例子:https://github.com/crarau/MixSwiftObjectiveC 爲了運行你需要的XCode 7.0版公測6的例子,雨燕2.0

Compilation issue

感謝您的幫助!

+0

過這個問題剛剛來到,任何更新呢? – axl411

+0

不幸的是,我不得不在Pod Lib中混合兩種語言。 –

+0

太傷心了......我有一個用objc編寫的私人pod lib,它足夠大,不可能一次性重寫Swift。我現在也必須去objc。 – axl411

回答

3

我證實了一個可行的解決方案,在這裏是如何工作的:

  1. 它必須是iOS的8+只(當然...)
  2. 使用Xcode中創建一個可可觸摸框架
  3. 開發框架,根據需要混合swift代碼和objc代碼。確保你將需要公開的所有swift類標記爲public。您可能需要諮詢documentation
  4. 創建podspec文件,提供必要的信息(請參閱here瞭解pod的外觀)。特別是有一件事是你需要在你的podspec文件的source_files中包含Umbrella Header(在你的框架中用來暴露objc代碼)。當您創建框架項目時,Xcode會自動爲您的框架創建一個傘頭。如果您的框架名稱爲NVMDummy,則標頭爲NVMDummy.h
  5. 推送吊艙並將吊艙作爲框架集成到您的項目中。
  6. 測試你的豆莢圖案。我創建了一個演示應用程序,加了我莢lib和我ViewController.m,我做了以下內容:

    @import MyPodLibMixingOjbcAndSwift; 
    
    // in viewDidLoad 
    // use objc code in MyLib -> OK... 
    // use swift code in MyLib -> OK... 
    

演示應用程序的作品,所以我斷定它的工作原理。

這裏的演示: https://github.com/axl411/TestNVMDummy

+0

你能澄清步驟4嗎?那在podspec文件中看起來如何?你能添加一個到你的示例項目嗎?乾杯! –

+0

@ adrian-schönig編輯我的答案。我在開始確認它在我的回答中使用演示後就停止了查看,因爲我仍然需要支持iOS 7一段時間。還有一些問題需要研究。我在回購演示中記錄了[問題](https://github.com/axl411/TestNVMDummy/issues/1),我們可以繼續在那裏討論問題。 – axl411

+1

謝謝!在我按照你的指示完成後,我仍然不斷髮現有關我的Swift類沒有找到的錯誤,但事實證明,我錯過了文檔中的重要步驟:「確保在Swift中使用'public'來創建你需要的東西在Objective-C中訪問「。 –

相關問題