Objective C練習
實驗一: Objective C練習 實驗主題: 實驗目的: 環境需求: 在專案中加入一個Car類別程式,在程式畫面載入時, 產生2部Car物件,設定車門個數與顏色,並將兩部 車的車門個數與顏色利用NSLog()方法,將其輸出到 除錯視窗中 將上面實驗的車門個數與顏色改為使用屬性宣告方 式 實驗目的: 藉由實驗程式了解與熟悉Objective C語法 環境需求: Xcode 本實驗會有2個練習 1. 在專案中加入一個Car類別程式,車門個數與顏色使用物件成員(變數)方式宣告,在程式畫面載入時,產生2部Car物件,設定車門個數與顏色,並將兩部車的車門個數與顏色利用NSLog()方法,將其輸出到除錯視窗中 2. 將第一個練習中的Car類別車門個數與顏色改為使用屬性宣告方式 1
練習一 建立Car類別 實驗一的練習一使用物件變數來儲存車門個數與顏色 執行結果在下方除錯視窗中,會顯示產生的2部車的車門數量和顏色 2
建立專案 開啟Xcode 1.開啟Xcode,選擇Create a new Xcode project,建立一個新專案 1
建立專案 2. 選擇iOSApplication中的Single View Application 2
建立專案 專案名稱 識別碼 程式語言 裝置種類 是否要包含單元和UI測試程式 3.輸入專案名稱、識別碼,選擇程式語言為Objective-C,裝置種類為Universal,表示iPhone和iPad上皆可執行,按下Next 識別碼 3 程式語言 裝置種類 是否要包含單元和UI測試程式
建立專案 4 4.選擇專案儲存位置,案下Create,完成建立專案
建立Car類別 5 5.在專案上按滑鼠右鍵,選擇New File…
建立Car類別 6 6.選擇iOSSource中的Cocoa Touch Class,加入類別,按下Next
建立Car類別 7.輸入類別名稱 Car,選擇繼承NSObject類別,語言為Objective-C,按下Next 7 類別名稱 繼承類別 程式語言
建立Car類別 8.選擇類別檔案儲存位置 8
建立Car類別 會在專案中新增兩個檔案:Car.h和Car.m
加入Car類別物件成員和方法 點擊Car.h檔案,在編輯視窗中輸入以下程式 @interface Car:NSObject { int _door; NSString * _color; } - (void) setDoor: (int) door; - (int)door; - (void) setColor: (NSString *) color; - (NSString *)color; @end 紅色程式部分為輸入之程式內容 宣告兩個物件變數 _door和_color 四個方法的宣告,分別用來設定和取得_door和_color資料
加入Car類別物件成員和方法 點擊Car.m檔案,在編輯視窗中輸入以下程式 #import "Car.h" @implementation Car - (void) setDoor: (int) door{ _door=door; } - (int)door{ return _door; - (void) setColor: (NSString *) color { _color=color; - (NSString *)color{ return _color; @end 紅色程式部分為輸入之程式內容 分別設定或是取得_door和_color物件變數值
產生Car物件 點擊ViewController.m檔案,在viewDidLoad 方 法中輸入以下紅色部分程式 - (void)viewDidLoad { [super viewDidLoad]; Car *c1=[[Car alloc]init]; Car *c2=[[Car alloc]init]; [c1 setDoor:3]; [c1 setColor:@"銀灰色"]; [c2 setDoor:5]; [c2 setColor:@"白色"]; NSLog(@"第一部車%d門,%@",[c1 door],[c1 color]); NSLog(@"第二部車%d門,%@",[c2 door],[c2 color]); } 在viewDidLoad 方法中輸入紅色部分程式,在此產生兩個Car物件,並分別設定Car物件的_door值和_color字串 viewDidLoad 為UIViewController類別中的方法,在視窗載入後會執行此方法
執行結果
練習二 建立Car類別屬性 實驗一的練習二使用屬性來儲存車門個數與顏色 執行結果在下方除錯視窗中,會顯示產生的2部車的車門數量和顏色 2
將物件變數刪除,改用屬性宣告 點擊Car.h檔案,程式內容修改如下 @interface Car:NSObject @property(nonatomic,strong)NSString * color; @property(nonatomic,assign)int door; @end 紅色程式部分為輸入之程式內容 宣告兩個屬性door和color
Car.m內容刪除 點擊Car.m檔案,在編輯視窗中刪除以下紅色程 式 #import "Car.h" @implementation Car - (void) setDoor: (int) door{ _door=door; } - (int)door{ return _door; - (void) setColor: (NSString *) color { _color=color; - (NSString *)color{ return _color; @end 最後Car.m的程式內容如下(完全不需實作任何方法): #import "Car.h" @implementation Car @end
產生Car物件 無須更改ViewController.m檔案內容 底下藍色程式將原本使用setter和getter方法存 取屬性,改為使用.存取屬性 - (void)viewDidLoad { [super viewDidLoad]; Car *c1=[[Car alloc]init]; Car *c2=[[Car alloc]init]; [c1 setDoor:3]; [c1 setColor:@"銀灰色"]; c2.door=5; c2.color=@"白色"; NSLog(@"第一部車%d門,%@",[c1 door],[c1 color]); NSLog(@"第二部車%d門,%@",c2.door,c2.color); } 在ViewController.m程式中產生物件與存取屬性方式的程式無須更動,在此練習中將c2物件改用.存取,進行屬性存取練習
執行結果 執行結果與練習一相同,只是改用屬性方式宣告