ArcGIS Runtime SDK for iOS開發系列教程(3)——Objective-C語法基礎

首發地址:http://www.cnblogs.com/esrichina/archive/2012/10/25/2671149.html

      Objective-C這門語言是由Brad Cox和Tom Love於1980年在Stepstone發明的。它是給C語言添加了面向對象的特性,與C語言完全兼容。目前,主要用於蘋果的Mac OS X和iOS平臺的開發。在2012年10月世界開發語言排行榜中Objective-C穩居於第三位

•關鍵字
    爲了避免與C,C++語言中的關鍵字衝突,所有的Objective-C關鍵字都是以@開始。   如@class,@interface,@implementation,@property,@synthesize,@public,@private,@protected,@try,@catch,@throw,@finally,@end,@protocal,@selector等。比如要聲明一個類,我們需要用到@interface,@end;要實現一個類,需要用到@implementation,@end。
 
•類
       Objective-C中的類包含類的聲明(.h)和類的實現(.m)兩個文件。如下圖中的gisxyViewController

      使用@interface,@implementation,@end等關鍵字來聲明和實現類,@interface gisxyViewController:UIViewController表明該類繼承自視圖控制器類UIViewController;

      使用#import代替#include,避免同一個頭文件被包含多次;

      @property@synthesize關鍵字是配對使用的,@property用來讓編譯好器自動生成與數據成員同名的方法聲明。@synthesize則是用來生成對應聲明方法的實現。類似於其他語言的setter/getter方法。其中@property(retain,nonamtic參數)代表了不同的賦值方式、讀寫方式等,跟內存管理相關,具體的大家可以參考google、百度。

      @IBOutlet關鍵字用來聲明輸出口(插座),輸出口就是應用中跟界面交互相關的實例變量,如MapView,Button等,推薦在屬性聲明中使用IBOutlet關鍵來實現。如@property (retain,nonamic) IBOutlet AGSMapView *mapView;

注:以IB(Interface Builder)開頭的關鍵字IBOutlet and IBAction 都是與界面編輯器相關的,與編譯器無關

•方法

     方法聲明:

     -(void) sum:(int)a and: (int) b;    //帶參數方法 
     -(double) convertToNum;     

     可以使用關鍵字IBAction聲明,如(IBAction)opacitySliderValueChanged:(id)sender;

    方法實現:

     -(void) sum:(int)a and: (int) b
      {
           c=a+b;
      }
     -(double) convertToNum
     {
           return 1.0; 
      }
     方法調用:

    [實例 方法];或[類名 方法名]; 如[self.mapview addMapLayer:tiledLayer WithName:@"Tiled Layer"];

    Objective-C語言允許在一個方法調用中嵌套另一個方法,比如:[NSString stringWithFormat:[test format]]; 

•協議

   協議是多個類共享一系列相關方法的一種規範。協議中列出的方法沒有響應的實現,由使用該協議的類來實現。
     協議聲明:
             使用@protocol和@end關鍵字聲明協議,可以是單獨的.h文件也可以包含在某個類的頭文件中。使用@optional和@required關鍵字可以來指定協議中的方法  是否必須要實現,默認是@required。
@protocol MyProtocol
- (void)requiredMethod;
@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required
- (void)anotherRequiredMethod; 
@end
       協議的使用
              a.引用協議
        一個類需要使用某個協議時,只需要在類的聲明中添加<協議名>就可以,一個類也可以引用多個協議。如下圖該類引用了模擬鍵盤的查詢協議、MapView的觸摸協議、GPS定位協議。

              b.實現協議的方法    添加了協議引用後,就可以在該類的實現文件中來實現該協議所包含的方法

•內存管理     

        iOS中不支持垃圾自動回收,對於內存管理應該遵循黃金法則

       簡單理解就是:如果對一個對象使用了alloc,copy,retain,那麼你必須使用相應的release或autorelease;

       對於release比較好理解,autorelease其實就是系統會自動將我們的Objective-C類收集到一個自動釋放池NSAutoreleasePool中,當池子銷燬時,再將這些類統一銷燬。在main函數中系統會默認的創建這樣的自動釋放池NSAutoreleasePool,當然,我們也可以在程序中來創建和銷燬,將一個類使用autorelease後,系統會將該類收集於離它最近的pool裏面(棧頂)。

•異常處理   
       異常處理使用@try,@catch,@finally關鍵字,語法與其他語言類似。

•其他
       id類型,Objective-C中使用id類型可以代表任何類型的,相當於NSObject*
       布爾類型,Objective-C中使用YES和NO,而不是TRUE和FALSE;
 
 
       總結:本講主要向大家介紹Objective-C的簡單語法,對於語法部分推薦大家去網上找些相關的視頻來看,那樣可能效果更好。下一講我將向大家介紹如何讓你的項目支持ArcGIS的功能,歡迎大家繼續關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章