オプションのクラス(ClassAなど)を含む静的ライブラリ(Lib1と呼びましょう)をパッケージ化する最良の方法を見つけようとしています。これには、2番目の静的ライブラリ(Lib2)が必要です。つまり、Lib2 は、ClassA がプロジェクトのコードで参照されている場合にのみ必要です。ClassAを使用しない(したがってLib2を含まない)プロジェクトでLib1が使用されていない限り、問題はないようですが、-ObjCリンカーフラグが必要です(他のプロジェクトの依存関係のため、私のものではありません)。
次の 3 つのシナリオに対する簡単な解決策を
考え出そうとしています
。オプションのクラスを使用しますが、-ObjC フラグが必要です
3) プロジェクトには私の静的ライブラリ + 2 番目の静的ライブラリが含まれており、オプションのクラスを使用します (この時点では -ObjC フラグは気にしません)。
2 番目の静的ライブラリを必要としないように、最終的なプロジェクト アプリからオプションのクラスを削除するリンカー フラグはありますか? 私の他の選択肢は、静的ライブラリの複数のバージョンをリリースすることだと思います.1つはオプションクラスを含みます(標準の選択)、含まないものは(-ObjC要件を持つプロジェクトの代替)、またはおそらくスタブファイルを提供します。 2 番目の静的ライブラリから必要なすべてのクラスの空の実装を提供しますか? これは、静的ライブラリの世界ではよくある問題のようです...このシナリオのベストプラクティスはありますか?
ありがとう!
解決:
1) 私の -ObjC ユーザーに、代わりに -force_load を使用するよう提案してください。(Rob に感謝します!)
2) 1 ができないユーザーのために、ClassA を含まない代替ビルドを用意します。