![](/img/trans.png)
[英]App not functioning the same on 32 bit devices - NSInteger vs intValue
[英]is NSInteger a 32bit integer
我是否认为在ios环境中声明NSInteger意味着它只会是32位值?
我想知道我不熟悉使用int32的另一个程序员告诉我,我在目标C中找到的唯一类似的东西是int32_t,_t代表'整数类型'..但是使用这些类型正在成为一个真正的痛苦我觉得我没有功能上所提供的目标c像NSInteger似乎得到。
任何帮助将不胜感激。
以下是旧版SDK中“ NSObjCRuntime.h
”中定义“ NSInteger
”的方法:
#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
截至2013年9月,iPhone现在可以运行64位芯片,这意味着NSInteger可能会更大。
在我自己的编码中,如果我正在使用纯粹的Objective C,那么我将坚持使用NSInteger
因为这样可以解决我的代码问题。 另一方面,开源的东西和某些程序员喜欢使用“ uint32_t
”或“ int32_t
”以及其他类似的显式类型,所以当我看到这些时,我尝试在我正在做的代码中匹配他们的风格用它。
typedef的存在是为了保护你免受基类型的影响,这就是为什么你使用它们而不是原始类型它的被称为可移植性。
更新iOS 11:NSInteger可以是32位或64位,具体取决于构建的应用程序和iOS版本。
构建32位应用程序时,NSInteger是一个32位整数。 64位应用程序将NSInteger视为64位整数。
https://developer.apple.com/documentation/objectivec/nsinteger
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.