5
顯然CGFloat
處理CGFloat的與NSScanner是double
上arm64:上arm64
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
因此,代碼
NSScanner *scanner = [NSScanner scannerWithString:string];
CGFloat c[components];
[scanner scanFloat:&c[i]]
其工作正常的32位應用程序,被分解爲64位。它可以替換爲
NSScanner *scanner = [NSScanner scannerWithString:string];
CGFloat c[components];
#if CGFLOAT_IS_DOUBLE
[scanner scanDouble:&c[i]];
#else
[scanner scanFloat:&c[i]];
#endif
但是有沒有更好的選擇?