objective-c一些需要記住的概念

來源:互聯網
上載者:User

1.定義類: 在.h檔案中,

          @interface 類名:父類名

          {

       成員變數;

          }

     成員函數;

     @end;

 

          在.m檔案中,

          @implementation 類名

          成員函數定義;

          @end;

 

2.成員函數定義:-(傳回值類型)函數名:(參數類型)參數,...

          -(void) setColor:(NSString*)newColor

          {

             Color=newColor;

          }    

          -(void) setNumber:(int)newNumber

          {

             Number=newNumber;

          }

 

3.執行個體化類:

          myCar=[Car new];

          [myCar setColor:red];

          [myCar setNumber:Num];

 

4. @class指令:

   當一個類中要使用另一個已經定義好的類時,用@class,若要用到其中的方法,則要#import這個類。

 

5.記憶體管理:

   iphone作業系統不支援記憶體回收機制。

   建立一個對象一般用alloc+init,也可用new;

   alloc,copy,retain,release,autorelease;

 

6.Foundation架構:

   @import <Foundation/Foundation.h>

   NSString類,NSMutableString類;

   NSArray類,NSMutableArray類;

   NSDictionary類,NSMutableDictionary類;

 

7.存取器:

  聲明類變數時,可使其成為屬性。@property int Number;

  .m檔案中,可加入@synthesize Number,自動產生setter和getter方法;

  這樣,便可用點操作符訪問成員變數,car.Number=27;

 

8.建立對象:

  id 對象名=[類名 alloc];

  [對象名 init];

  Boat *boat=[[Boat allco] init];

  Boat *boat=[[Boat alloc] initWithNum:123

                           Color:@"red"];

  一般情況下,init時這樣寫:

  -init

  {

        if(self=[super init]){

          //初始化操作

        }

        return self;

  }

  有參數時,

  -(id) initWithNum:(int) Num

        Color:(NSString*) Color;

 

9.變數範圍:

  沒有任何範圍限制時,預設為protected;

 

10. @try異常處理:

  @try{}

  @catch(NSException *exception){NSLog(@"Catch exception name :%@; reason:%@;",

                                [exception name],[exception reason]);}

  @finally{}

 

11.類目與協議:

   有時候需要在一個已經定義好的類中加入一些方法而不重寫該類,可以使用類目(categories)。

   如已定義一Circle類,CircleCal.h檔案中,

   @import "Circle.h"

   @interface Circle(CircleCal)

   -(float) AreaCal;

   -(float) LenCal;

   @end;

   CircleCal.m檔案中,

   #import "CircleCal.h"

   @implementation Circle(CircleCal)

   -(float) AreaCal{}

   -(float) LenCal{}

   @end;

   此時便可在main函數中調用新定義的函數;

   ps:類目不能向類中添加執行個體變數;類目可以覆蓋它所要擴充的類中的方法,不過應盡量避免;使用類目對一個類進行擴充時,同樣會影響到該類的子類。

  

   協議是一個方法列表。它聲明了一系列方法而不予以實現。協議不是類本身,沒有父類,而且不能定義成員變數。

   @protocol Calculating

   -(void) CalculateArea;

   @end;

 

   @interface Rectangle:NSObject <Calculating>{}

   在定義Rectangle中的成員函數時,也要定義Calculating中的方法,這樣才能調用。

   @protocol有兩個修飾符:@optional和@required,

   被@optional修飾的方法,在採用該協議的類中可以選擇不實現,而採用@required修飾的方法,則必須實現。預設為@required。

相關文章

聯繫我們

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