我已经定义了一个在 Mac 和 iOS 上都可以正常工作的协议。但是,协议的其中一种方法最好返回特定的对象类(而不仅仅是“id”),但该类不是基础类,因此在两个平台上有所不同(例如,UIButton 和 NSButton)。
如何使用编译指示标记,例如#ifdef TARGET_OS_IPHONE
在两个库中包含相同的协议头,一个是为 iOS 构建的,一个是为 Mac 构建的?
这是我的实际协议和我在条件编译中的(失败的)尝试
#import <Foundation/Foundation.h>
@protocol SharedAppDelegate <NSObject>
#ifdef TARGET_OS_IPHONE
@protocol UIApplicationDelegate;
+ (NSObject<UIApplicationDelegate> *)sharedAppDelegate;
#else
@protocol NSApplicationDelegate;
+ (NSObject<NSApplicationDelegate> *)sharedAppDelegate;
#endif
@end
我立即知道的一件事是目标不包括模拟器,但我找不到一个涵盖 Mac 和另一个所有 iOS 版本的目标的可靠示例。