在In Cocoa do you prefer NSInteger or just regular int, and why?处,提到了NSDouble
和NSFloat
,但我看不到任何文档中的引用。如果NSInteger
的目的是为了建筑安全,那么其他类型如double
或float
呢?
答案 0 :(得分:82)
NSInteger
,因为int
类型在32位和64位系统之间的大小不同。 float
和double
的大小不一样,所以不需要为它们设置包装类型。
答案 1 :(得分:5)
没有NSFloat
但我知道Core Graphics API最终从float
更改为CGFloat
,因此它可以在某些体系结构上使用double
。
最好使用API标头声明的确切类型。如果您为不同的目标重新编译代码,这会自动更改类型。
答案 2 :(得分:0)
这也是关于惯例的。
int的typedef与int int本身不兼容。
示例:pid_t的类型为int,但传递int会产生警告。
为什么呢?因为您希望确保如果跨越API边界,每个人都知道代码所期望的内容。
有float和double类型,即NSTimeInterval。它并不是关于基础类型,而是遵循的惯例。
如果将local int声明为循环计数器并且您不打算将其传递给定义良好的API,则可以将int调用为int。