NSUInteger是無符號的,即沒有負數(shù)
NSInteger是有符號的京闰,所以NSUInteger類型不能給它賦負值颜及。
int和NSInteger區(qū)別
項目開發(fā)中經(jīng)常會用到整型變量,出于C編程習慣蹂楣,我通常都用 int俏站,后來發(fā)現(xiàn)別人的代碼中有很多的 NSInteger,一直很疑惑痊土、很想知道二者有什么不同肄扎,苦于各種事情,今天終于有空來研究一下:
在蘋果官方的API文檔中赁酝,關(guān)于NSInteger有這樣一段描述:
When building 32-bit applications, NSInteger is a 32-bit integer.
A 64-bit application treats NSInteger as a 64-bit integer.
翻譯過來就是:在32位App中犯祠,NSInteger是32位整型,在64位App中酌呆,NSInteger是64位整型.
同時衡载,在頭文件 中,對NSInteger有以下定義:
<pre>#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</pre>
由此可知:NSInteger能夠自動匹配隙袁,在32位應用中痰娱,表示32位的整型,而在64位應用中藤乙,表示64位整型猜揪。
所以在MAC_OS或iOS系統(tǒng)編程中如果用到整型或無符號整型變量時,盡量采用NSInteger
或NSUInteger
坛梁。
總結(jié):NSInteger與int的區(qū)別是NSInteger會根據(jù)系統(tǒng)的位數(shù)(32or64)自動選擇int的最大數(shù)值(int or long)而姐。