Objective-C 入門(六)category 分類
Objective-C 入門(六)category 分類
category 字面就很好理解 把你類中定義的一些方法單拿出去(為什么要拿出去呢?)
其實他的實際作用就是為寫的類來擴充一些方法 這對于你的代碼擴充性是一個很好的作用
category分出來的方法是不一定要全部實現的 你可以先定義出來 在你需要的時候來補充它就可以了
如何實現category呢
兩種方法
一: 在你原有的.h頭文件中 直接加入category
例如源代碼 :
# import <Foundation/Foundation.h>
@interface Preson:NSObject{
int _age;
NSString * _name;
}
@propert (nonatomic,assign)int age;
@propert (nonatomic,retain)NSString*name;
-(void)say;
@end;
加入category 之后.h:
# import <Foundation/Foundation.h>
@interface SKPerson(自定義一個名字)//-----此處為category 需要加個小括號
-(void)go;
@ end
@interface SKPerson:NSObject{
int _age;
NSString * _name;
}
@propert (nonatomic,assign)int age;
@propert (nonatomic,retain)NSString*name;
-(void)say;
@end;
.m文件為:
#improt "SKPerson.h"
@implementation SKPerson(自定義一個名字)
-(void)go{
NSLog(@"This is SKPerson category")
}
@end;
@implementation SKPerson
syncthsize age=_age;
syncthsize name=_name;
-(void)say{
NSLog(@"This is SKPerson")
}
@end;
二: 新建一個類 選擇.category 文件 命名通用方法 SKPerson+自定義一個名字 //---------注意有個"+"號
這里就可以直接寫新的方法了
.h文件為:
#improt "SKPerson.h"
@interface SKPerson(自定義一個名字)
-(void)go;
@end
.m文件為:
#improt "SKPerson(自定義一個名字)"
@implementation SKPerson(自定義一個名字)
-(void)go{
NSLog(@"This is SKPerson category")
}
@end
使用 category 要注意以下幾點
1 可以訪問原類中的方法屬性
2 可以覆蓋原類中的方法
3 只能增加消息 不能改變實例變量
---------本博文針對有JAVA基礎 OC還屬于初學者 文中有錯誤的地方還請指出