1. 程式人生 > >製作 Swift 和 Objective-C Mixed 的 Pod

製作 Swift 和 Objective-C Mixed 的 Pod

  • 知識背景
    1. What did CocoaPods do?

      In Xcode, with references directly from the ruby source, it:

      1. Creates or updates a workspace.
      2. Adds your project to the workspace if needed.
      3. Adds the CocoaPods static library project to the workspace if needed.
      4. Adds libPods.a to: targets => build phases => link with libraries.
      5. Adds the CocoaPods Xcode configuration file to your app’s project.
      6. Changes your app’s target configurations to be based on CocoaPods’s.
      7. Adds a build phase to copy resources from any pods you installed to your app bundle. i.e. a ‘Script build phase’ after all other build phases with the following:
        • Shell: /bin/sh
        • Script: ${SRCROOT}/Pods/PodsResources.sh

大意是,CocoaPods是一個依賴管理工具,使用CocoaPods可以自動的去分析依賴,然後通過指令碼去將第三方依賴複製編譯為靜態庫然後連結進專案。~~~等。

  • 製作Pod

有時候我們有把程式碼做成一個輪子給別人用情況,我們需要按照官方的教程Making CocoaPods去製作。

教程分為2類 :

  1. 釋出公共Pod給所有開發者使用。
  2. 製作私有Pod。 方法較為簡單。自行查閱資料即可。這裡不再贅述。
  • Swift和Objective-C Mixed

參考官方的文件(文末指出),混編裡面包含有2種呼叫情況:

Question1. Swift呼叫Objective-C
Question2. Objective-C呼叫Swift

這裡我新建一個專案 命名為Mixed(Single View Application), 建立一個資料夾Classes用於存放原始碼
建立一個Objective-C Class O 繼承自NSObject 建立一個Swift Class S 繼承自NSObject

  • Answer1: 為Swift原始碼新增一個 XXX.h標頭檔案這裡為Mixed-Bridging-Header 在這個檔案中匯入需要訪問的Objective-C 原始碼的標頭檔案。

11239184-ba2903eb5c703c52

headerConfig

有時候Xcode反應會稍微延遲一點。手動編譯一下即可。做完這個配置,Swift即可訪問Objective-C 原始碼。
程式碼如圖:

12239184-1f13564ff56abf01

swiftAccessObjc
  • Answer2: Objective-C 訪問Swift原始碼 需要匯入系統為專案生成的標頭檔案,預設為Module+Swift.h 當然自己也是可以修改的, 匯入之後,編譯一下(Xcode有時候有快取,沒事就應該編譯一下