在定义数据类型的时候可能会有类似的疑惑,CGFloat和float到底有什么区别?NSInteger和int有什么区别?  什么时候该用哪一种?

CGFloat is just a typedef for either float or double.
typedef float CGFloat;// 32-bittypedef double CGFloat;// 64-bit
对于需要兼容64位机器的程序而言,需要用CGFloat,当然从长远角度考虑还是推荐尽量使用CGFloat。尽管在32位上相比float增加了一些memory footprint的消耗。

对应64位编程的时候,

对于整数应使用NSInteger和NSUInteger,而非int

对于小数应使用CGFloat,而非float

NSInteger其实是一个自动定义,在32位中为int,而64位中为long。

CGFloat的原理类似。