Hit*_*rth 36 iphone int objective-c nsinteger nsuinteger
是什么之间的主要区别int
,NSInteger
而NSUInteger
在Objective-C?
哪一个更适合在应用程序中使用?为什么?
Bas*_*ian 29
在这种情况下,您可以右键单击并转到定义:
#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)
zap*_*aph 20
区别在于抽象类型及其关联的大小.现在我们不必担心int的大小或指针在任何特定硬件上有多大.
"C"在这方面很糟糕,只说明long至少与int一样大,int是硬件的"自然"整数大小(无论这意味着什么),int至少与int一样长短 - 一个(大混乱).
这在Fortran的时候似乎是一个好主意,但没有成熟.
可以使用POSIX定义,例如uint32_t,int16_t等.但是这并没有解决指针在任何特定硬件上需要多大的问题.
因此,如果Apple将返回类型定义为NSUInteger,则只需使用它,您无需知道特定硬件的大小是16位,32位还是64位.(我只是为了一个例子,我在无线中选择了这些值).
正如你在@Bastian中看到的那样,实际大小取决于硬件.
文档回答了"问题的信",但没有提供对"为什么"的理解?
归档时间: |
|
查看次数: |
21412 次 |
最近记录: |