有没有一种安全的方法可以将CGFloat
“转换”为NSNumber
?
NSNumber
包含numberWithFloat:
和numberWithDouble:
方法,但CGFloat
被定义为float
或double
,具体取决于平台,似乎存在风险使用其中任何一个。
或者numberWithDouble:
是否可以安全地使用CGFloat
,因为它是更精确的一个?
答案 0 :(得分:30)
答案 1 :(得分:21)
这就是我处理它的方式:
@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
中有条件地通过平台定义。