2011-08-04 8 views
4

私は十数のクラスとカテゴリを持つカスタムフレームワークを持っているとしましょう。彼らはすべて標準的なココアクラスを継承/拡張します。このため、私のフレームワークはコンパイル時に< Cocoaにリンクしています。Appleフレームワークを必要とするカスタムフレームワークを構築するためのCocoaベストプラクティス

QuartzCore>が<のクラスを追加することをお勧めしますが、これをパッケージ化するにはどうすればよいですか?

1)単にクラスをフレームワークに追加してQuartzCoreをインポートするだけであれば、私のフレームワークの誰もがQuartzCoreをインポートする必要があります。

2)クラスを別のフレームワークに移動すると、消費者は、QuartzCoreと同様に、完全な機能を得るために自分のフレームワークを両方インポートする必要があります。第1のフレームワーク内のクラスは、第2のフレームワークを使用することができない。

3)#ifdef #endifなどを実行してQuartzCoreフレームワークを弱くリンクして、Cocoa標準クラスとQuartzCore依存クラスが単一のフレームワークになるようにする方法はありますか? QuartzCoreをプロジェクトに追加する必要がありますか? QuartzCoreが理想的に存在しない場合、クラス/カテゴリはランタイムでは使用できません。

答えて

2

個人的には、#1と一緒に行きます。とにかく、QuartzCoreにリンクしているアプリはほとんどありません。

フレームワークを弱くすることができます。リンクしているフレームワークからQuartzCoreを削除し、 "その他のリンカフラグ"に引数 "-weak_framework QuartzCore"を追加します。

弱いリンクに関する完全なドキュメントは、Xcodeにあります。 「Apple Frameworkとの弱いリンク」というガイドがあります。

関連する問題