有没有办法让 OSX 类别和 iOS 类别都有一个头文件和实现文件?我不想使方法完全相同并添加另外两个文件。

我试过这个,这不起作用:

#if TARGET_OS_IPHONE
#define kClass [UIColor class]
#import <UIKit/UIKit.h>
#elif TARGET_OS_MAC
#define kClass [NSColor class]
#import <AppKit/AppKit.h>
#endif

@interface kClass (MyCategory)

有没有办法做到这一点?

最佳答案

绝对地!请记住, #define 是编译前的简单文本替换:您希望 kClassUIColor ,而不是 [UIColor class] ,就像您永远不会编写 @interface [UIColor class] (MyCategory) 一样。

综上所述:

#if TARGET_OS_IPHONE
#define kClass UIColor
#import <UIKit/UIKit.h>
#elif TARGET_OS_MAC
#define kClass NSColor
#import <AppKit/AppKit.h>
#endif

@interface kClass (MyCategory)

10-08 19:18