一 建立一個OC的類 完整的寫一個函數:需要函數的聲明和定義。 完整的寫一個類:需要類的聲明和實現。 1.類的聲明 聲明對象的屬性和行為 1 #import <Foundation/Foundation.h> 2 3 @interface Car : NSObject 4 { 5 @public 6
一 建立一個OC的類
完整的寫一個函數:需要函數的聲明和定義。
完整的寫一個類:需要類的聲明和實現。
1.類的聲明
聲明對象的屬性和行為
1 #import <Foundation/Foundation.h> 2 3 @interface Car : NSObject 4 { 5 @public 6 int speed;//速度 7 int wheels;//輪子 8 } 9 10 - (void) initSpeed:(int)speed withWheels:(int) wheels ; 11 12 - (void) run; 13 14 @end
第3行:NSObject目的是讓Car這個類具備創建對象的能力。
第5行:@public 可以讓外部的指針間接訪問對象內部的成員變數。
第 6,7行:定義對象的屬性。
第10行:定義一個有入參的行為。
第12行:定義對象的行為。只要是OC對象的方法,必須以減號 - 開頭。
在OC方法返回值中任何數據類型都必須用小括弧()擴中。
實現@interface中聲明的方法。
2.類的實現
Car 類的實現。
1 #import "Car.h" 2 3 @implementation Car 4 5 - (void)run{ 6 NSLog(@"車子跑起來。車速是%d km/h,輪子數是%d", speed, wheels ); 7 } 8 9 - (void)initSpeed:(int)speed withWheels:(int)wheels{ 10 self -> speed = speed; 11 self -> wheels = wheels; 12 } 13 14 @end
第9行代碼: 給對象的屬性speed, wheels賦值初始值。不能在類的聲明 @interface 中對屬性就行初始化。
在xcode中,自動實現函數的實現:
輸入 "-" , 然後輸入函數的頭幾個字母,選中xcode自動彈出的方法。
3.類的調用
1 #import <Foundation/Foundation.h> 2 #import "Car.h" 3 4 int main(int argc, const char * argv[]) { 5 Car *car = [Car new]; 6 car -> wheels = 4; 7 car -> speed = 100; 8 [car run]; 9 10 [car initSpeed:200 withWheels:5]; 11 [car run]; 12 13 14 return 0; 15 }
第5行:在OC中,想執行一些行為,就接上一個中括弧[行為執行者 行為名稱] 。利用類來創建對象。
[Car new]會創建出一個新對象,並且會返回新對象本身(新對象的地址)。
第6,7行:給 car所指向對象的wheels,speed屬性賦值。
第8行:給car所指向的對象發送一條run消息。
二對象與函數參數
例子1
1 #import <Foundation/Foundation.h> 2 #import "Car.h" 3 4 void test1(Car *newC){ 5 newC -> wheels = 5; 6 } 7 8 9 int main(int argc, const char * argv[]) { 10 Car *car = [Car new]; 11 car -> wheels = 4; 12 car -> speed = 100; 13 [car run]; 14 15 test1(car ); 16 [car run]; 17 18 return 0; 19 }
第16行代碼的返回結果為:車子跑起來。車速是100 km/h,輪子數是5
記憶體圖如下:
例子2
第29行代碼的返回結果為 車子跑起來。車速是200 km/h,輪子數是6
記憶體圖如下: