iOS开发系列-Category
2018-04-14 16:20 iCoderHong 阅读(197) 评论(0) 编辑 收藏 举报Category
Category是OC中特有的语法。Category的作用
* 可以在不修改原来类的基础上,为这个类扩充一些方法
* 一个庞大的类可以分为多个模块开发
* 一个庞大的类可以由多个人来编写,更有利于团队合作
分类的使用
分类也分为声明和实现两个部分
// ClassName制定给哪个类扩充方法
@interface ClassName (CategoryName)
// 编写扩充方法声明...
@end
@implementation Person (CategoryName)
// 编写扩充方法实现...
@end
创建分类的类名:原有类名称+分类名称
分类的注意事项
-
分类是用于给原有类添加方法,它只能添加方法,不能添加属性(成员变量)。
-
分类中的@propery 只会生成setter/getter方法声明,不会声明下划线成员变量。
-
分类中如果与原有类方法同名,会覆盖原有类的方法。(不需要导入分类头文件直接覆盖)
-
如果多个分类中都有和原中同名的方法,那么会执行方法会调用最后一个参与编译的分类方法。
类扩展
类扩展也叫做匿名分类,是Category中的一个特例,没有名字。可以为某个类扩充一些私有的成员变量和方法
类扩展写在.m中
@interface 类名()
@end
给Person类添加一个类扩展
#import "Person.h"
@interface Person()
{
// 通过类扩展添加私有成员变量
int _height;
}
/** 通过类扩展添加私有私有属性 自动生成setter跟getter声明跟实现 同时生成私有的下划线_age成员变量*/
@property (nonatomic, assign) int age;
// 通过类扩展声明私有方法声明
- (void)run;
@end
@implementation Person
// 通过类扩展声明私有方法实现
- (void)run
{
}
@end