我可以安全地将UInt32存储到NSInteger吗?

时间:2010-05-02 12:52:30

标签: iphone c objective-c

对于UInt32,NSInteger是否足够大?或者甚至是同样的事情?

2 个答案:

答案 0 :(得分:2)

否,因为NSInteger是签名类型而UInt32是无符号的。

您应该检查Apple的头文件中这些类型的定义,以了解它们的含义。这样做很容易。从Xcode中的一个打开的项目中,选择File - >快速打开...(Command-Shift-D)并在文本字段中键入您感兴趣的类型名称。它将找到定义它的文件。或者只需在命令中双击源代码中的类型。

答案 1 :(得分:1)

以下是来自NSObjCRuntime.h的代码(来自iPhone SDK 3.2安装):

#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