int,NSInteger和NSUInteger之间的区别
int
, NSInteger
和NSUInteger
在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
不同之处在于抽象types及其与硬件大小的关联。 现在我们不必担心int的大小,或者指针在特定硬件上有多大。
“C”在这里是坏的,只能说明一个long至less和int一样大,int是硬件的“自然”整数大小(不pipe那意味着什么),int至less和短 – 一个(大混乱)。
这在来自Fortran的时候似乎是一个好主意,但是并没有很好的成熟。
人们可以使用POSIX定义,例如uint32_t,int16_t等,但是这并不能解决指针在任何特定硬件上需要多大。
所以,如果Apple将返回types定义为NSUInteger,则只需使用该types,而不需要知道特定硬件的大小为16,32或64位。 (我只是为了举例而select了这些数值)。
正如你在@Bastian中看到的那样,实际的大小取决于硬件。
文件回答“问题的信件”,但没有提供“为什么”的理解?