objective-c 支援的型別有兩種:基本型別 和 類。
基本型別,如同c 語言中的 int 型別一樣,拿來就可以直接用。 而類在使用時,必須先建立乙個物件,再為物件分配空間,接著做初始化和賦值。 類的初始化,需用類自身的方法 (類方法)。 **中所建立的物件,不用後,還得記著釋放。
做了這麼多鋪墊, 具體到 nsnumber 和 nsinteger ,又怎樣呢?
nsnumber 是類, 而 nsinteger 只不過是個 基本型別。
既然 nsinteger是基本型別,那麼,使用起來就非常簡單。 宣告乙個變數, nsinteger myint; 直接賦值就可以了。 比如: myint=8;
談到「類」,總是給人以抽象的感覺。像nsnumber 這個型別,從字面上看,它屬於char、int、long、double 中的哪一種呢? 其實,nsnumber 可以隸屬其中的任意一種型別。 這就是「類」的強大 —— 抽象,而且內嵌多種方法(method)。
既然nsnumber 是類,就應該遵循「類」的規則。 通過類方法來建立、初始化乙個類的物件。
nsnumber 所擁有的類方法,如下:
+ (nsnumber*)numberwithchar: (char)value;
+ (nsnumber*)numberwithint: (int)value;
+ (nsnumber*)numberwithfloat: (float)value;
+ (nsnumber*)numberwithbool: (bool) value;
nsnumber *mynumber,*floatnumber,*intnumber,*doublenumber,*charnumber;
mynumber = [nsnumber numberwithlong:0xabcdef];
floatnumber = [nsnumber numberwithfloat:12.33];
intnumber = [nsnumber numberwithint:100];
doublenumber = [nsnumber numberwithdouble:12345e+15];
charnumber = [nsnumber numberwithchar:'x'];
將基本型別資料封裝到nsnumber中後,就可以通過下面的例項方法重新獲取它:
- (char)charvalue;
- (int)intvalue;
- (float)floatvalue;
- (bool)boolvalue;
- (nsstring*)stringvalue;
myint = [intnumber intvalue]; //獲取物件的整型值
//[floatnumber floatvalue];
//[doublenumber doublevalue];
//[charnumber charvalue];
有了以上概念,我們來考乙個面試題。 以下code 編譯是否有誤?
nsmutablearray *myarray = [[nsmutablearray alloc] init ];
[myarray addobject: 6 ];
這樣是會引發編譯錯誤的,因為nsmutablearray中所要存放的是乙個物件,但『6』不是。這怎麼辦呢? 需要用到 nsnumber。
nsmutablearray *myarray = [[nsmutablearray alloc] init ];
[myarray addobject: [nsnumber numberwithint:6] ];
nslog(@"array content is %@", myarray);
NSNumber與NSInteger轉換遇到的問題
先貼 import h int main int argc,const char argv return 0 輸出的結果為 2015 10 14 22 36 11.096 data 8213 381135 value 1 10,value 2 2599 program ended with exit...
NSNumber判斷數值物件型別
參考 nsnumber判斷數值物件型別 今天對在解析plist時候發現,在plist裡nsnumber裡面寫的是什麼樣的資料,你讀出來時,依據數值接近的型別轉換 nscfnumber double 0.11 nscfnumber long 1 nscfnumber bool 1 當我想要判斷讀出來的...
iOS OC 基礎 NSNumber常用方法
nsnumber數值物件 將基本資料型別儲存為nsnumber 物件型別 nsnumber intnum nsnumber numberwithint 10 nslog num intnum nsnumber floatnum nsnumber numberwithfloat 10.32 nslog...