SwiftとObjective-Cが混在する開発環境
SwiftとObjective-Cが混在する開発環境ではどうしてもビルド時間が課題となります。
これを解決するための手段として、モジュールの一部分をEmbeddedFramework化する方法が考えられます。
こうすることで、Framework化した部分のリビルドの機会を減らせるため差分ビルドが効きやすくなりビルド時間が短縮されます。
EmbeddedFrameworkでTarget分割
EmbeddedFrameworkでプロジェクトの一部分をモジュール化するとして、本体のアプリとの位置関係が複数パターン考えられますが Framework内でもThirdPartyのライブラリを利用したい場合はTargetにするのが得策です。 この方法であれば本体が利用しているCarthageやCocoaPodsも利用することができます。
ブリッジ部分の実装
Swift製のEmbeddedFrameworkが完成したら、あとはそれらを呼び出すブリッジ部分をObjective-Cで実装すれば本体アプリのObjective-CクラスからそれらのIFを利用することができます。 ブリッジの実装で重要なのは以下の点です。
- ヘッダファイルをpublic属性にする
- Swiftの実装部分をObjective-Cから参照可能にする
- ブリッジの実装部分はXXX-Swift.hをインクルード
- UmbrellaHeaderに公開したいヘッダをインクルード