don*_*ile 3 c iphone objective-c
在标题中,它被定义为:
#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
Run Code Online (Sandbox Code Playgroud)
那么UInt32在没有问题的情况下适合NSUInteger(unsigned int)吗?UInt32和unsigned int之间的区别在哪里?
我假设unsigned long比unsigned int大?
我想a UInt32和unsigned inta 之间的唯一区别是a UInt32保证是32位长,而unsigned int如果你在<32位操作系统上运行(比方说),技术上可能更短.
然而,由于在Mac和iPhone都至少为32位系统,它的安全使用unsigned int,UInt32以及NSUInteger合理的互换.这里唯一的区别是a NSUInteger可能是64位长(在Mac上,编译x86_64时).
至于你的unsigned long对比问题unsigned int,UInt32是对type的类型unsigned long,再次表明它可以互换使用.一个unsigned long是保证至少一样大的unsigned int.