這篇介紹幾種變量類型的區別和注意點,雖然簡單.但比較實用.spa
一、當須要使用int類型的變量的時候,能夠像寫C的程序同樣,用int,也能夠用NSInteger,但更推薦使用NSInteger,由於這樣就不用考慮設備是32位的仍是64位的。對象
二、NSUInteger是無符號的,即沒有負數,NSInteger是有符號的。string
三、有人說既然都有了NSInteger等這些基礎類型了爲何還要有NSNumber?它們的功能固然是不一樣的。it
NSInteger是基礎類型,可是NSNumber是一個類。若是想要存儲一個數值,直接用NSInteger是不行的,好比在一個Array裏面這樣用:編譯
NSArray *array= [[NSArray alloc]init];table
[array addObject:3];//會編譯錯誤基礎
這樣是會引起編譯錯誤的,由於NSArray裏面放的須要是一個類,但‘3’不是。這個時候須要用到NSNumber:變量
NSMutableArray *array= [[NSMutableArray alloc]init];數據類型
[array addObject:[NSNumber numberWithInt:3]];float
一下兩行代碼是會有警告的 由於NSArray 是不可變的.
NSArray *array1= [[NSArray alloc]init];
[array1 addObject:[NSNumber numberWithInt:3]];
Cocoa提供了NSNumber類來包裝(即以對象形式實現)基本數據類型。
例如如下建立方法:
+ (NSNumber*)numberWithChar: (char)value;
+ (NSNumber*)numberWithInt: (int)value;
+ (NSNumber*)numberWithFloat: (float)value;
+ (NSNumber*)numberWithBool: (BOOL) value;
將基本類型數據封裝到NSNumber中後,就能夠經過下面的實例方法從新獲取它:
- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString*)stringValue;