Objective-C這門語言是由Brad Cox和Tom Love於1980年在Stepstone發明的。它是給C語言添加了面向對象的特性,與C語言完全兼容。目前,主要用於蘋果的Mac OS X和iOS平台的開發。在2012年10月世界開發語言排行榜中Objective-C穩居於第三位。
使用@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
-(
double
) convertToNum
return
1.0;
[實例 方法];或[類名 方法名]; 如[self.mapview addMapLayer:tiledLayer WithName:@"Tiled Layer"];
Objective-C語言允許在一個方法調用中嵌套另一個方法,比如:[NSString stringWithFormat:[test format]];
•協議
- (void)requiredMethod;
@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required
- (void)anotherRequiredMethod;
@end
•內存管理
iOS中不支持垃圾自動回收,對於內存管理應該遵循黃金法則
簡單理解就是:如果對一個對象使用了alloc,copy,retain,那么你必須使用相應的release或autorelease;
對於release比較好理解,autorelease其實就是系統會自動將我們的Objective-C類收集到一個自動釋放池NSAutoreleasePool中,當池子銷毀時,再將這些類統一銷毀。在main函數中系統會默認的創建這樣的自動釋放池NSAutoreleasePool,當然,我們也可以在程序中來創建和銷毀,將一個類使用autorelease后,系統會將該類收集於離它最近的pool里面(棧頂)。