Ped*_*ira 8 cocoa objective-c uicolor nscolor c-preprocessor
我正在尝试创建一个NSObject子类,它将有很多返回颜色的方法,所以UIColor如果我正在构建iOS或者NSColor我正在为OS X构建,我想返回.
这是一种什么样的伪代码预期的行为应该是:
#define COLOR #if TARGET_OS_IPHONE UIColor #elif TARGET_OS_MAC NSColor #endif
+ (COLOR *)makeMeColorful;
有可能做这样的事情,而不是为我的每个对象的方法(一个用于iOS,另一个用于OS X)制作两个方法吗?
Mic*_*lum 13
这绝对可行.例如,来自SpriteKit的SKColor定义如下:
#if TARGET_OS_IPHONE
#define SKColor UIColor
#else
#define SKColor NSColor
#endif
然后像这样使用:
SKColor *color = [SKColor colorWithHue:0.5 saturation:1.0 brightness:1.0 alpha:1.0];
这简单地利用了这一事实,UIColor并NSColor分享了他们的一些类方法.
如果你正在使用Swift尝试的话
#if os(macOS)
    typealias Color = NSColor
#else
    typealias Color = UIColor
#endif
适用于macOS,iOS,tvOS和watchOS.有关Swift预处理程序指令的更多信息.
| 归档时间: | 
 | 
| 查看次数: | 1370 次 | 
| 最近记录: |