当开发iOS时,我应该使用NSInteger vs. int ?我在苹果的示例代码中看到,他们在将值作为参数传递给函数或从函数返回值时使用NSInteger(或NSUInteger)。
- (NSInteger)someFunc;...
- (void)someFuncWithInt:(NSInteger)value;...
但在函数中,他们只是用int来跟踪一个值
for (int i; i < something; i++)
...
int something;
something += somethingElseThatsAnInt;
...
我读过(被告知),NSInteger是一个安全的方法来引用一个整数在64位或32位的环境,所以为什么要使用int在所有?
你应该使用NSInteger,如果你需要将它们与常量值进行比较,如NSNotFound或NSIntegerMax,因为这些值在32位和64位系统上是不同的,所以索引值,计数等:使用NSInteger或NSUInteger。
在大多数情况下使用NSInteger没有什么坏处,除了它占用两倍的内存。内存的影响非常小,但如果在任何时候都有大量的数字浮动,那么使用int型可能会有所不同。
如果你确实使用NSInteger或NSUInteger,当使用格式化字符串时,你会想要将它们转换为长整数或无符号长整数,因为如果你尝试注销一个NSInteger,就像它有一个已知的长度一样,Xcode的新特性会返回一个警告。在将它们发送给int类型的变量或参数时,也应该同样小心,因为在这个过程中可能会失去一些精度。
总的来说,如果你不希望在内存中同时有成千上万个NSInteger,那么使用NSInteger比不断担心两者之间的差异要容易得多。