在为 iOS 开发时,我应该什么时候使用 NSInteger
与 int?我在 Apple 示例代码中看到他们在将值作为参数传递给函数或从函数返回值时使用 NSInteger
(或 NSUInteger
)。
- (NSInteger)someFunc;...
- (void)someFuncWithInt:(NSInteger)value;...
但在一个函数中,他们只是使用 int
来跟踪一个值
for (int i; i < something; i++)
...
int something;
something += somethingElseThatsAnInt;
...
我已经阅读(被告知)NSInteger
是在 64 位或 32 位环境中引用整数的安全方法,所以为什么要使用 int
有吗?
最佳答案
当您不知道您的代码可能在哪种处理器架构上运行时,您通常希望使用 NSInteger
,因此您可能出于某种原因需要最大可能的整数类型,即 32 位systems 只是一个 int
,而在 64 位系统上它是一个 long
。
除非您特别需要,否则我会坚持使用 NSInteger
而不是 int
/long
。
NSInteger
/NSUInteger
被定义为这些类型之一的 *dynamic typedef
*s,它们的定义如下:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
关于您应该为每种类型使用的正确格式说明符,请参阅 String Programming Guide's section on Platform Dependencies
https://stackoverflow.com/questions/4445173/