有没有一种安全的方法可以将 a “转换”CGFloat为 a NSNumber?
NSNumber具有numberWithFloat:andnumberWithDouble:方法,但CGFloat被定义为float或double取决于平台,使用其中任何一个似乎都有风险。
或者numberWithDouble:与 a 一起使用是安全的CGFloat,因为它是更精确的那个?
有没有一种安全的方法可以将 a “转换”CGFloat为 a NSNumber?
NSNumber具有numberWithFloat:andnumberWithDouble:方法,但CGFloat被定义为float或double取决于平台,使用其中任何一个似乎都有风险。
或者numberWithDouble:与 a 一起使用是安全的CGFloat,因为它是更精确的那个?
我是这样处理的:
@interface NSNumber (CGFloatAdditions)
+ (NSNumber*)numberWithCGFloat: (CGFloat)value;
- (CGFloat)CGFloatValue;
@end
@implementation NSNumber (CGFloatAdditions)
+ (NSNumber*)numberWithCGFloat: (CGFloat)value
{
#if CGFLOAT_IS_DOUBLE
return [NSNumber numberWithDouble: (double)value];
#else
return [NSNumber numberWithFloat: value];
#endif
}
- (CGFloat)CGFloatValue
{
#if CGFLOAT_IS_DOUBLE
return [self doubleValue];
#else
return [self floatValue];
#endif
}
@end
CGFLOAT_IS_DOUBLECGBase.h由平台有条件地定义。