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。