IOS基礎之 (四) OC對象,ios基礎oc對象

來源:互聯網
上載者:User

IOS基礎之 (四) OC對象,ios基礎oc對象
一 建立一個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
 1 #import <Foundation/Foundation.h> 2 #import "Car.h" 3  4 void test2(Car *newC){ 5     Car *c2 = [Car new]; 6     c2 -> wheels = 5; 7     c2 -> speed =300; 8      9     newC = c2;10     newC -> wheels = 7;11 }12 13 int main(int argc, const char * argv[]) {14     Car *car = [Car new];15     car -> wheels = 4;16     car -> speed = 100;17     [car run];18      19     test2( car );20     [car run];21     22     return 0;23 }

第20行代碼的返回結果為 車子跑起來。車速是100 km/h,輪子數是4

記憶體配置圖如下:

 

 

物件導向封裝的好處:

1)更加接近人類的思考方式。

2)只需要關注對象,不需要關注步驟。

 

相關文章

聯繫我們

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