CGFloat只是对float或double的typedef定义,在64位机器上,CGFloat定义为double类型,在32位机器上为float.
在xcode中按住Command键,点击CGFloat,可跳转至CGbase.h文件CGFloat的定义处。
#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
/* Definition of the `CGFloat' type and `CGFLOAT_DEFINED'. */
typedefCGFLOAT_TYPE CGFloat;
#define CGFLOAT_DEFINED 1
同样的,
NSInteger为long或int的typedef,
NSUInteger为unsigned long或unsigned int的typedef。
#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