MacとiOSの両方で問題なく動作するプロトコルを定義しました。ただし、プロトコルのメソッドの1つは、(「id」だけでなく)特定のクラスのオブジェクトを返す方が適切ですが、そのクラスは基本クラスではないため、2つのプラットフォーム(たとえば、UIButtonとNSButton)によって異なります。
#ifdef TARGET_OS_IPHONE
iOS用とMac用の2つのライブラリに同じプロトコルヘッダーを含めるようなプラグママークを使用するにはどうすればよいですか?
これが私の実際のプロトコルと条件付きコンパイルの(壊れた)試みです
#import <Foundation/Foundation.h>
@protocol SharedAppDelegate <NSObject>
#ifdef TARGET_OS_IPHONE
@protocol UIApplicationDelegate;
+ (NSObject<UIApplicationDelegate> *)sharedAppDelegate;
#else
@protocol NSApplicationDelegate;
+ (NSObject<NSApplicationDelegate> *)sharedAppDelegate;
#endif
@end
私がすぐに知っていることの1つは、ターゲットにシミュレーターが含まれていないことですが、MacとすべてのiOSの化身をカバーする1つのターゲットの確かな例を見つけることができません。