CGFloat is just a typedef for either float or double.
typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit
对于需要兼容64位机器的程序而言,需要用CGFloat,当然从长远角度考虑还是推荐尽量使用CGFloat。尽管在32位上相比float增加了一些memory footprint的消耗。
与之相似的int和NSInteger区别,
NSInteger为long或int的typedef,
NSUInteger为unsigned long或unsigned int的typedef。
这两个在NSObjCRuntime.h中定义。
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedeflong NSInteger;
typedefunsignedlong NSUInteger;
#else
typedefint NSInteger;
typedefunsignedint NSUInteger;
#endif