4

iOSライブラリ/フレームワークを構築しようとしています。簡単にするために、それをA使用するプロジェクトにいくつかのクラスを公開します。ここで問題となるのは、クラスがクラスAに依存していることです。クラスBは、ライブラリのビルド出力に公開される(またはシンボルとして含まれる)ことを意図していません。これは問題を引き起こします。これは、クラスを含む別のライブラリがありC、これもクラスに依存しているためBです。

プロジェクトに両方のライブラリを含めようとすると、リンカはクラスの定義が複数あることについて文句を言いBます。

この問題を回避するための最良の方法は何ですか?B2つのライブラリ(または2つのライブラリの少なくとも1つ)を構築するときに クラスを弱くリンクするように設定することは可能ですか?もしそうなら、どのように?

または、クラスBを独自のライブラリ/フレームワークに抽出し、クラスBをソースファイルとして含める代わりに、それを参照するように2つのライブラリを変更する必要がありますか?

4

1 に答える 1

2

プロジェクトに複数のターゲットを作成するのが最善の方法だと思います。これを行う最も簡単な方法は、XCodeの左側にあるファイルリストでプロジェクトファイルをクリックし、中央のペインの[TARGETS]の下にあるオブジェクトを右クリックして、[複製]を選択することです。次に、AとCを1つのターゲットに含め、BとCを別のターゲットに含めることができます。それらを別々にコンパイルすることができ、それらが共通のファイルを共有することを除いて、基本的に2つのプロジェクトを持つのと同じです。これはあなたが望むもののように聞こえますか?

編集考え直して、それはそれのように聞こえません。ライブラリにコンパイルしてから、別のプロジェクトをライブラリにリンクすると、問題が発生します。

コンパイルされたライブラリ内に弱くリンクされたオブジェクトを含める方法はないようです。それらを別々のライブラリに分割する方がおそらく良いでしょう(これは、このページの下部で説明されているシナリオで起こったことのようなものです)

于 2012-05-01T03:36:20.087 に答える