架構是由許多類,方法,函數以及文檔按照一定的規則群組織起來的集合,以便於程式員更方便、迅速的開發程式。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 。歡迎大家訪問。