//聲明一個opretation類目
@interface Car (opretation)
-(void)run;
-(void)stop;
@end
//維護類目
@interface Car (maintain)
-(void)fix;
@end
Car類名後面的括號中的是類目名。類目的實現寫在.m文件中,例如//實現opretation類目
@implementation Car (opretation)
-(void)run{
NSLog(@"汽車啓動");
}
-(void)stop{
NSLog(@"汽車停止");
}
@end
//實現maintain類目
@implementation Car (maintain)
-(void)fix{
//調用自己的私有方法
[self fixCar];
}
@end
類目爲原始類擴展了一些方法,其他地方調用原始類裏的方法時,也就可以調用類目裏定義的方法。
延展是用來定義私有方法的,例如像java裏private修飾的方法。寫在.h文件中的方法都是可以被別人訪問的,如果像定義私有方法,就可以寫到延展中。不用延展定義私有方法也行,直接寫在類的實現裏。但是這樣閱讀和維護起來很麻煩,不能直接看出哪個是私有方法。於是最好還是把私有方法的定義寫到延展中。延展於類目相似,但是延展的聲明寫在.m文件裏,而且類名後面的括號爲空的。例如
//延展,用於聲明私有方法
@interface Car ()
-(void)fixCar;
@end
方法的實現寫在類的實現裏。這樣就實現了一個私有方法。
@implementation Car
//......其他代碼,這裏省略
-(void)fixCar{
NSLog(@"修理汽車");
}
@end
主類的代碼如下#import <Foundation/Foundation.h>
#import "Car.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Car *car = [[Car alloc]initWithId:1001 andName:@"BYD"];
[car run];
[car stop];
[car fix];
}
return 0;
}