Der Arbeitscode ist für mich so etwas wie:Was ist die gängigste und korrekte Vorgehensweise, um einen CGFloat von einer NSNummer zu erhalten?
NSNumber *n = @42.42;
CGFloat cgf = 0;
CFNumberRef cfn = CFBridgingRetain(n);
CFNumberGetValue(cfn, kCFNumberCGFloatType, &cgf);
CFRelease(cfn);
Es gibt auch
CGFloat cgf = (CGFLOAT_IS_DOUBLE) ? [n doubleValue] : [n floatValue];
sein könnte Aber das riecht für mich noch hässlicher.
Es scheint mir, es sollte bessere API für eine solche gemeinsame Sache sein. Sind da irgendwelche?
TIL über '_Generic'. Das sieht wirklich cool aus, danke! – rounak
@rounak: Danke. Tatsächlich bietet es in diesem speziellen Fall keinen großen Vorteil gegenüber 'CGFloat cgf = [n doubleValue];', aber wenn Sie * einen CGFloat * scannen, dann hilft es, eine temporäre Variable zu vermeiden, vergleiche http://stackoverflow.com/questions/20731828/objecc-test-if-int-ist-lang-oder-nicht-cgfloat-ist-float-oder-double. –