在代码中使用NSInteger
代替int
之类的内容有什么好处?我在示例中看到了很多,包括Apple的官方代码示例。
答案 0 :(得分:3)
我很确定NSInteger
和NSUInteger
是为了解决Mac OS上的64位量化问题而发明的(无论你正在构建什么样的架构,它们都保证是正确的尺寸) 。我觉得你在iPhone上使用它并不重要,尽管我习惯使用Apple的NS
类型。
无论如何,如果您将代码移植到Mac OS,它会更容易。
答案 1 :(得分:3)
在SO.com上有一个类似的问题:In Cocoa do you prefer NSInteger or int, and why?我更喜欢使用NSInteger
,因为它是面向未来的,Apple现在使用它int
,这是推荐的做法的东西。
但使用int
并非“错误”。
答案 2 :(得分:2)
int
为4个字节,long
为4个字节,指针为4个字节int
是4个字节,long
是8个字节,指针是8个字节许多现有API(由于历史原因而错误地)在32位模式下使用int
但必须在64位模式下使用long
。
在C中,int
和long
不是等效类型,因此如果您使用int
,则可能与64位API不兼容,并且如果您使用long
您可能与32位API不兼容。通过使用NSInteger
,您的代码将与这些API的32位和64位版本兼容。
因此,如果您使用的是指定NSInteger的API,那么您应该使用NSInteger。
在您自己的代码和您自己的API中:
int
long
或NSInteger
long long
你不一定使用NSInteger的原因是8字节整数有很多用途。