category:能够为系统类进行扩展,能够不继承系统类,直接给系统类添加系统方法。框架
#import继承
@interface NSObject (Category)项目管理
- (void)myMethod;开发
@end源码
这是一个最简单的Category,做用于NSObject类,给NSObject添加了一个方法。编译
注意事项class
1:类别是类的扩展,只能够声明方法,不能够声明变量。而且,类别的方法优先级较高,可覆盖原类方法。import
2:类别的方法中,不能够调用super方法。--类别的局限 版本管理
3:category 方法可能会覆盖于同一个类class 的其它 category 中的方法。但也可能被覆盖,由于不法预知他们的加载优先顺序,出现这种状况一般会在编译时出错。若是在一个开发的SDK中使用了类别, 就最好保证类别名不一样于使用者的类别名, 以及类别方法也不一样于使用者的类别方法名, 一般经过加前缀来作到。变量
使用类别:
1。对框架提供类的扩展(没有源码,不能修改)。
2。 不想生成一个新的子类的状况下,好比对 NSArray 的扩展。
3。 方便作项目管理,能够将一份源码在多个地方共享或者作方法版本管理、多人协做开发、用本地版本替换公共版本实现。