【iOS知識學習】_int、NSInteger、NSUInteger、NSNumber的區別和聯絡
阿新 • • 發佈:2019-01-02
1、首先先了解下NSNumber型別:
NSNumber是NSValue的一個子類,它是一個物件來儲存數字值包括bool型,它提供了一系列的方法來儲存char a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL,它提供了一個compare:方法來決定兩個NSNumber物件的排序;
建立一個NSNumber物件有以下方法:
+ numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt: + numberWithInteger: + numberWithLong: + numberWithLongLong: + numberWithShort: + numberWithUnsignedChar: + numberWithUnsignedInt: + numberWithUnsignedInteger: + numberWithUnsignedLong: + numberWithUnsignedLongLong: + numberWithUnsignedShort:
初始化方法:
檢索– initWithBool: – initWithChar: – initWithDouble: – initWithFloat: – initWithInt: – initWithInteger: – initWithLong: – initWithLongLong: – initWithShort: – initWithUnsignedChar: – initWithUnsignedInt: – initWithUnsignedInteger: – initWithUnsignedLong: – initWithUnsignedLongLong: – initWithUnsignedShort:
– boolValue
– charValue
– decimalValue
– doubleValue
– floatValue
– intValue
– integerValue
– longLongValue
– longValue
– shortValue
– unsignedCharValue
– unsignedIntegerValue
– unsignedIntValue
– unsignedLongLongValue
– unsignedLongValue
– unsignedShortValue
NSNumber型別有點類似id型別,對於任何型別的數字物件都能用它來宣告,也就是用它來宣告數字物件,通過宣告,很難判斷宣告變數是什麼數字型別,確定數字物件型別多是在初始化的時候才能確定。
數字物件的建立或者初始化:
格式:
NSNumber 數字物件 = [NSNumber numberWith數字型別:數值];
intNumber = [NSNumber numberWithInt:100];
longNumber = [NSNumber numberWithLong:0xabcdef];
floatNumber = [NSNumber numberWithFloat:10.01];
2、int、 NSInteger、 NSUInteger、NSNumber之間的區別和聯絡
int : 當使用int型別定義變數的時候,可以像寫C程式一樣,用int也可以用NSInteger,推薦使用NSInteger ,因為這樣就不用考慮裝置是32位還是64位了。
NSUInteger是無符號的,即沒有負數,NSInteger是有符號的。
NSInteger是基礎型別,NSNumber是一個類,如果需要儲存一個數值,直接使用NSInteger是不行的,比如在一個數組裡使用下面的語句就會報錯:
NSArray *array = [NSArray alloc] init];
[array addObject:3];
因為array裡應該是一個類,但‘3’不是,所以需要用NSNumber:
NSArray *array = [NSArray alloc] init];
[array addObject:[NSNumber numberWithInt:3]];
寫的比較簡單,希望有幫助。