是否存在NSDouble,NSFloat或NSInteger以外的其他类型?

时间:2011-07-15 05:11:30

标签: objective-c cocoa types

In Cocoa do you prefer NSInteger or just regular int, and why?处,提到了NSDoubleNSFloat,但我看不到任何文档中的引用。如果NSInteger的目的是为了建筑安全,那么其他类型如doublefloat呢?

3 个答案:

答案 0 :(得分:82)

存在

NSInteger,因为int类型在32位和64位系统之间的大小不同。 floatdouble的大小不一样,所以不需要为它们设置包装类型。

答案 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。