NSDouble,NSFloat或NSInteger之外的其他types是否存在?

在cocoa你喜欢NSInteger或只是普通的int,为什么? ,提到NSDoubleNSFloat ,但是我看不到任何文档中的参考。 如果NSInteger的目的是为了build筑安全,那么其他types如doublefloat什么?

存在NSInteger是因为inttypes在32位和64位系统之间变化。 floatdouble在大小上没有相同的变化,所以没有必要为它们包装types。

有没有NSFloat但我知道核心graphicsAPI最终从float更改为CGFloat以便它可以在一些架构上使用double

最好使用API​​标头声明的确切types。 如果你为不同的目标重新编译你的代码,这会使types改变自动进行。

这也是约定。

int的typedef与int int本身不兼容。

例如:pid_t是inttypes的,但是传递一个int会产生一个警告。

为什么? 因为你想确定如果你跨越API边界,每个人都知道代码的期望。

有浮动和双重types,即NSTimeInterval。 这不是真正的基础types,而是遵循的惯例。

如果您将本地int声明为循环计数器,并且您不打算将其传递给定义良好的API,则可以将int作为int来调用。