有没有一种安全的方法可以将 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_DOUBLE
CGBase.h
由平台有条件地定义。