Objective-C Foundation架構實踐——NSNumber(一)__架構

來源:互聯網
上載者:User

       架構是由許多類,方法,函數以及文檔按照一定的規則群組織起來的集合,以便於程式員更方便、迅速的開發程式。Cocoa程式編寫主要用到兩個架構Foundation和ApplicationKit(UIKit). 其中Foundation架構主要定義了一些基礎類,供程式員使用,而ApplicationKit主要是一些使用者介面設計的類,用於Mac開發使用此類。Foundation架構中的所有類都繼承自NSObject。

       作為通用的物件導向的函數庫,Foundation提供了字串、數值的管理,容器以及枚舉,以及一些其他的與圖形化使用者介面沒有直接關係的功能。

       在之前的學習中,我們已經學習了基礎資料型別 (Elementary Data Type)。但這些都是基礎資料型別 (Elementary Data Type),他們並不是對象,因此,不能向他們發送訊息。然而有時候也需要把他們當做對象來處理。比如,我們需要把基本類型放入集合中(在Cocoa中集合只能存放對象,無法存放基礎資料型別 (Elementary Data Type)),那麼我們就需將基礎資料型別 (Elementary Data Type)轉換為數字對象。OC中提供了數字對象“NSNumber”可以將基礎資料型別 (Elementary Data Type)“封裝”成對象,這樣我們就可以當基礎資料型別 (Elementary Data Type)來處理了。這裡大家可以和java中的裝箱拆箱進行比較學習。

       使用類方法進行數字對象的初始化:(使用類方法建立的對象不需要我們進行記憶體管理)

    //類方法建立對象;    int num2 = 200;    NSNumber *number2 = [NSNumber numberWithInt:num2];        BOOL boo2 = true;    NSNumber *bool2 = [NSNumber numberWithBool:boo2];        char ch2 = 'a';    NSNumber *character2 = [NSNumber numberWithChar:ch2];    

       使用執行個體方法進行數字對象初始化:(使用執行個體方法建立的對象需要我們進行記憶體管理,ARC的話就不用了)

    //執行個體方法建立對象;    int num = 100;    NSNumber *number = [[NSNumber alloc] initWithInt:num];        BOOL boo = true;    NSNumber *booll = [[NSNumber alloc] initWithBool:boo];        char ch = 'a';    NSNumber *character = [[NSNumber alloc] initWithChar:ch];

 

        同樣的,我們也可以把NSNumber對象轉換為基本類型:

    //NSNumber對象轉換為基本類型    int nn = [number intValue];    BOOL bb = [booll boolValue];    char cc = [character charValue];    

         現在我們來對NSNumber對象和基礎資料型別 (Elementary Data Type)來進行輸出:

    //執行個體方法建立對象;    int num = 100;    NSNumber *number = [[NSNumber alloc] initWithInt:num];    NSLog(@"num = %@",number);        BOOL boo = true;    NSNumber *booll = [[NSNumber alloc] initWithBool:boo];    NSLog(@"boo = %@",booll);        char ch = 'a';    NSNumber *character = [[NSNumber alloc] initWithChar:ch];    NSLog(@"character = %@",character);            //NSNumber對象轉換為基本類型    int nn = [number intValue];    NSLog(@"nn = %d",nn);        BOOL bb = [booll boolValue];    NSLog(@"bb = %hhd",bb);        char cc = [character charValue];    NSLog(@"cc = %c",cc);

輸出結果如下:

輸出結果是完全對應的,注意‘a’的ASCII碼值是97.當輸出對象時,格式控制符使用的是“%@”。



github首頁:https://github.com/chenyufeng1991  。歡迎大家訪問。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.