NSDouble,NSFloat或NSInteger之外的其他types是否存在?
在cocoa你喜欢NSInteger或只是普通的int,为什么? ,提到NSDouble
和NSFloat
,但是我看不到任何文档中的参考。 如果NSInteger
的目的是为了build筑安全,那么其他types如double
或float
什么?
存在NSInteger
是因为int
types在32位和64位系统之间变化。 float
和double
在大小上没有相同的变化,所以没有必要为它们包装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来调用。