私はこれを回避策で実現しました。
静的ライブラリ/フレームワークを別のフレームワーク/静的ライブラリにコンパイルすると、そのシンボルは引き続き公開されます(nm <binary> | grep <symbol>
を確認してください)。つまり、フレームワークAのクラスCのヘッダーを含めて、それらのシンボルについて知るには、アプリケーションコードが必要です。
フレームワークAのヘッダーには、クラスCヘッダーを含める必要があります。フレームワークをコンパイルするときは、"ClassC.h"
を使用する必要がありますが、フレームワークを使用しているときは、アプリケーションに含まれているフレームワーク内の場所である<FrameworkName/ClassC.h>
が必要です。これを行うには、スクリプト実行段階で削除されたマクロを使用します。
:
だから、あなたの枠組みの中で、ターゲットのビルドフェーズは、クラスCのためのあなたのヘッダーはその後、「スクリプトの実行」段階を追加し、以下を貼り付け、コピーヘッダ段階の「公共」セクションにあることを確認します
TARGET_MACRO="TARGET_FRAMEWORK"
cd -P "$BUILT_PRODUCTS_DIR/$WRAPPER_NAME/Headers/"
perl -0pi -e "s/\#if ${TARGET_MACRO}.*?\#else\r?\n?(.*?)\r?\n?\#endif/\1/sg" *.h
変更 `TARGET_FRAMEWORK」何、またはそれを残すことにする。
フレームワークAでは、すべてのためのTARGET_FRAMEWORK=1
は構成を構築する追加、プリプロセッサマクロの下で、設定を構築する。
その後、含まあなたのフレームワークAのヘッダにクラスC:を使用してください:
BとCをインポートするために、ヘッダーを作成し、A? – antonio081014
私はヘッダーを細かくインポートすることができます。それは、問題を引き起こしているAでパブリックにしています。 – Nick