NSNumber與NSInteger的區別

2021-06-25 10:56:56 字數 1821 閱讀 4327

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...