製作 Swift 和 Objective-C Mixed 的 Pod
阿新 • • 發佈:2018-12-23
- 知識背景
- What did CocoaPods do?
In Xcode, with references directly from the ruby source, it:
- Creates or updates a workspace.
- Adds your project to the workspace if needed.
- Adds the CocoaPods static library project to the workspace if needed.
- Adds libPods.a to: targets => build phases => link with libraries.
- Adds the CocoaPods Xcode configuration file to your app’s project.
- Changes your app’s target configurations to be based on CocoaPods’s.
- 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
- What did CocoaPods do?
大意是,CocoaPods是一個依賴管理工具,使用CocoaPods可以自動的去分析依賴,然後通過指令碼去將第三方依賴複製編譯為靜態庫然後連結進專案。~~~等。
- 製作Pod
有時候我們有把程式碼做成一個輪子給別人用情況,我們需要按照官方的教程Making CocoaPods去製作。
教程分為2類 :
- 釋出公共Pod給所有開發者使用。
- 製作私有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 原始碼的標頭檔案。
有時候Xcode反應會稍微延遲一點。手動編譯一下即可。做完這個配置,Swift即可訪問Objective-C 原始碼。
程式碼如圖:
- Answer2: Objective-C 訪問Swift原始碼 需要匯入系統為專案生成的標頭檔案,預設為Module+Swift.h 當然自己也是可以修改的, 匯入之後,編譯一下(Xcode有時候有快取,沒事就應該編譯一下