私は誰かがこれにいくらかの光を当てることができることを望んでいました。調べてみましたが、なかなか見つかりませんでした...
IPhoneアプリケーションとApple時計拡張機能)の間でクラスを共有する方法はありますか?
時計の拡張機能にクラスmyClass
があるとしましょう。電話アプリケーション内でこのクラスを使用できません。とにかくこれを回避する方法はありますか?
iPhoneアプリケーションとApple時計の拡張子は、プロジェクト内の基本的に異なるターゲットです。ファイルごとに(.hファイルを除く)、それを含めるターゲットを指定できます。
これを行うには、少なくとも2つの方法があります。
1)トップメニューから[表示]-> [ユーティリティ]-> [ファイルインスペクター]を選択します。右側のパネルが表示され、プロジェクトで使用可能なターゲットの横にチェックボックスが付いたターゲットメンバーシップセクションが表示されます。このファイルを含めるターゲットを確認してください。この場合、iPhoneアプリとWatchKit拡張機能。
2)プロジェクトをクリックして、プロジェクト設定に移動することもできます。 必要なターゲットを選択してください。 (つまり、iPhoneアプリまたはWatchKit拡張機能)、ビルドフェーズタブをクリックします。ソースのコンパイルで、「+」アイコンをクリックして、ターゲット用にビルドするファイルをさらに追加できます。 (つまり、あなたの場合はmyClass.m)
お役に立てれば!
これを行うには2つの方法があります。
共有コードを含むフレームワークを作成し、そのフレームワークをWatchKit拡張機能とiPhoneアプリにリンクします。これは、最もクリーンで推奨される方法です。
MyClassのソースファイル(および依存関係)をiPhoneとWatchKitの両方の拡張ターゲットに追加します。
IPhoneアプリのObj-CクラスをSwift Watch App Extensionのコードで共有したい場合:
IPhoneアプリから共有したいすべての.mファイルをTargetfor WatchKit Extensionアプリ(つまり、Target Membership)に含めます。
ブリッジヘッダー(新しい.hファイル)ファイル(通常は[projectName] -Bridging-Header.hという名前)を作成します。オプションで、[projectName] -Watch-Bridging-Header.h(またはその他の適切なもの)という名前を付けることができます。