IOS中的类别和扩展

category:可以为系统类进行扩展,可以不继承系统类,直接给系统类添加系统方法。

#import

@interface NSObject (Category)

- (void)myMethod;

@end

这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法。

注意事项

1:类别是类的扩展,只可以声明方法,不可以声明变量。并且,类别的方法优先级较高,可覆盖原类方法。

2:类别的方法中,不可以调用super方法。--类别的局限 

3:category 方法可能会覆盖于同一个类class 的其它 category 中的方法。但也可能被覆盖,因为不法预知他们的加载优先顺序,出现这种情况通常会在编译时出错。如果在一个开发的SDK中使用了类别, 就最好保证类别名不同于使用者的类别名, 以及类别方法也不同于使用者的类别方法名, 通常通过加前缀来做到。

使用类别:

1。对框架提供类的扩展(没有源码,不能修改)。

2。 不想生成一个新的子类的情况下,比如对 NSArray 的扩展。

3。 方便做项目管理,可以将一份源码在多个地方共享或者做方法版本管理、多人协作开发、用本地版本替换公共版本实现。

posted @ 2016-03-23 13:34  wangbaixue  阅读(274)  评论(0编辑  收藏  举报