3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您通常希望在NSInteger
不知道代碼可能運(yùn)行的處理器體系結(jié)構(gòu)類(lèi)型時(shí)使用,因此您可能出于某種原因需要最大可能 int
類(lèi)型,在32位系統(tǒng)上只需要一個(gè)int
,而在64位系統(tǒng)上這是一個(gè)long
。
我堅(jiān)持使用NSInteger
而不是int
/ long
除非你特別要求它們。
NSInteger
/ NSUInteger
被定義為* dynamic typedef
* s到這些類(lèi)型之一,它們的定義如下:
NSInteger/ NSUInteger被定義為* dynamic typedef* s到這些類(lèi)型之一,它們的定義如下:
#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
關(guān)于每種類(lèi)型應(yīng)使用的正確格式說(shuō)明符,請(qǐng)參閱“ 字符串編程指南”中有關(guān)平臺(tái)依賴(lài)性的部分。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
為什么要使用int
?
Apple使用的int
是因?yàn)檠h(huán)控制變量(僅用于控制循環(huán)迭代)int
數(shù)據(jù)類(lèi)型很好,無(wú)論是數(shù)據(jù)類(lèi)型大小還是它可以為循環(huán)保存的值。這里不需要平臺(tái)相關(guān)的數(shù)據(jù)類(lèi)型。對(duì)于循環(huán)控制變量,即使是16位int
也會(huì)在大多數(shù)情況下完成。
Apple使用NSInteger
函數(shù)返回值或函數(shù)參數(shù),因?yàn)樵谶@種情況下,數(shù)據(jù)類(lèi)型[size]很重要,因?yàn)槟谑褂煤瘮?shù)正在與其他程序或其他代碼進(jìn)行通信/傳遞數(shù)據(jù); 看到我應(yīng)該何時(shí)使用NSInteger vs int的答案?在你的問(wèn)題本身......
當(dāng)將值作為參數(shù)傳遞給函數(shù)或從函數(shù)返回值時(shí),它們[Apple]使用NSInteger(或NSUInteger)。
- 3 回答
- 0 關(guān)注
- 833 瀏覽
添加回答
舉報(bào)