これら2つのシステム用のクロスプラットフォームライブラリの作成に関する多くの質問を読みました。すべての答えは、解決策として静的ライブラリを指しています。
静的ライブラリで終わらせたくはありません。iOS用のメソッドとそれに対応するOSX用のメソッドを使用してクラスを作成したいと思います。
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
私が抱えている最初の問題は、特定のシステムでのみ利用可能なクラスを使用する方法が見つからないことです。たとえば、UIColor
iOSとOSXで動作する関数をどのように管理できNSColor
ますか?
iOS用のプロジェクトを作成した場合、調べてみるとヘッダーリストにFoundation.h
見つかりません。NSColor.h
TARGET_OS_MAC
とTARGET_OS_IPHONE
定義を使用して2つのシステムを区別しようと思いました...私は正しい方向に進んでいますか?
より多くの情報を追加するために編集:
現在、iOSTestAppとOSxTestAppの2つのターゲットがあります。これらのターゲットには、システムに応じて必要なフレームワークを含めました。
OSXTestAppをアクティブターゲットとして選択した場合にのみ、を使用して機能しますTARGET_OS_MAC
。TARGET_OS_IPHONE
iOSAppTestを選択すると、XcodeはOS Xデータ型のエラーを返します(つまりNSColor
)
これらのエラーを生成するコードの例を次に示します。
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
定義を逆にすると機能しますが...これらのエラーを生成するコードの例を次に示します。
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif