NSNumber от CGFloat

Есть ли безопасный способ "преобразовать" CGFloat в NSNumber?

NSNumber имеет методы numberWithFloat: и numberWithDouble:, но CGFloat определяется как float или double в зависимости от платформы, представляется рискованным использовать любой из них.

Или numberWithDouble: безопасен для использования с CGFloat, так как он с большей точностью?

Ответ 2

Вот как я справился с этим:

@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.