何ができるようになる?
Objective-CプロジェクトをSwiftに以降していく時に、都度更新する必要がある <#ProjectName#>-Bridging-Header.h
(これ以降Bridging-Header
と書きます) を手作業で更新しなくて良くなります。
通常のBridging-Headerの管理
SwiftからObjective-Cのクラスを呼び出すには、Bridging-Header
必要なクラスをimportします。
既存のObjective-CのプロジェクトをSwift化していく際には、最初にBridgin-Header
に多くのimport文を書くことになると思います。
さらにSwift化を進めていくとObjective-Cのファイルを削除する度に、Bridging-Header
を更新しなくてはいけません。
そこで、Objective-Cファイルを削除しても、Bridging-Header
を手作業で更新する必要がないような方法を紹介します。
手順
RunScriptを追加
BuildPhaseにBridging-Header
を更新するRunScriptを追加します。
Xcode→プロジェクトファイル→TARGETS→Build Phases→左上の「+」ボタン→New Run Script Phase
追加したRun Scriptは並べ替える事ができます。 Compile Sourcesより前にこのScriptを配置してください。
echo '#import "AppDelegate.h"' > ./TestProject/TestProject-Bridging-Header.h
find ./TestProject/Classes -type f -name "*.h" -exec basename {} \; | sed 's/^\(.*\)$/#import "\1"/' >> ./TestProject/TestProject-Bridging-Header.h
シェルでBridging-Header
にimport文を挿入しています。
このスクリプトは各プロジェクトのファイル配置により適宜変更してください。
↓こんな感じになります。
ここではRun Script(1)の名前を Update Bridging-Header.h
に変更しています。
仕組み
- Build PhaseのRunScriptで、ビルド時のコンパイル前に
Bridging-Header
を更新します。
まとめ
Build PhaseのRun Scriptを使えば、Bridging-Headerの手作業による更新がなくなります。
Swift化の煩わしい作業をなくしましょう。