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还属于初学者 文中有错误的地方还请指出