NSNumber與NSInteger的區別

來源:互聯網
上載者:User

標籤:style   color   io   使用   ar   資料   div   cti   代碼   

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的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.