1. 程式人生 > >【iOS知識學習】_int、NSInteger、NSUInteger、NSNumber的區別和聯絡

【iOS知識學習】_int、NSInteger、NSUInteger、NSNumber的區別和聯絡

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]];

寫的比較簡單,希望有幫助。