Objective-C 类别(Category) 与 子类(继承基类)
来源:互联网 发布:cctv中国网络电视台 编辑:程序博客网 时间:2024/05/28 23:12
与子类相比,类别最主要的优点如下:
1.系统中已经存在的类可以不需修改就可使用类别的扩展功能。
例如,假设系统中存在一个类A;另外一个类B中定义了一个类A类型的实例变量,并包含了类A的头文件“#import <A.h>"。假设一段时间后,需要对类A扩展几个新的方法。如果用子类,就需要创建一个子类A-1。如果类B想要使用类A的新方法,就要进行如下修改:
1) 将包含的头文件改为"#import<A-1.h>";
2)将所有用到的类A对象改为类A-1的对象。可以想象,如何有很多类需要用到类A的新功能(比如类A是iOS中的类UIViewController),随着系统的升级(iOS从1.0到5.0),你的程序需要不停地进行这种繁琐地修改。
如果使用类别,即使类A升级了,系统中其它的类可以不需任何修改,直接就可以调用类A的新方法。
2.实现了功能的局部化封装
类别定义可以放在一个已存在的类(类A)的定义文件中(.h)。这意味着这个类别只有在类A被引用的前提下才会被外部看到。如果另一个类(类B)不需要用到类A的功能(没有包含类A的.h文件),也就不会看到依附类A存在的类别。iOS SDK中广泛运用这种类别定义法来封装功能。例如,在 UINavigationController.h中定义了专为UINavigationController扩展的UIViewController类别:
@interface UIViewController (UINavigationControllerItem)
@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; @property(nonatomic,readonly,retain) UINavigationController *navigationController; ......@end
如果一个类不引用UINavigationController.h,也就不会看到navigationItem和navigationController这两个性质申明(declared property)。
3.轻巧(light-weight)
很多时候,对已存在的类所需的扩展仅仅是几个新方法。这时,用类别避免了在系统中留下很多非常短小的“微”子类,使程序更加紧凑。
0 0
- Objective-C 类别(Category) 与 子类(继承基类)
- Objective-c Category(类别)
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Objective C 类别(Category)与类扩展(Extensions)
- Objective C 类别(Category)与类扩展(Extensions)
- objective-c中Category类别(扩展类)
- objective-c中Category类别(扩展类)专题总结
- objective-c中Category类别(扩展类)专题总结
- objective-c中Category类别(扩展类)专题总结
- objective-c中Category类别(扩展类)专题总结
- objective-c中Category类别(扩展类)
- objective-c类别(Category)详细解说
- Objective-C中的类别(Category)
- Objective-C 类别(Category)浅谈
- 工程师tcp/ip stack
- HEVC帧内预测编码之LCU四叉树结构分块
- 6.Maven聚合和继承,相关案例配置
- VS2010是个失败的产品!BUG太多了
- jquery mobile动态添加元素之后不能正确渲染解决方法说明
- Objective-C 类别(Category) 与 子类(继承基类)
- SDRAM控制器设计
- R语言中因子(factor)转换成数值型(numeric)的问题
- Myeclipse学习笔记
- Max Sum
- CvArr、Mat、CvMat、IplImage、BYTE转换
- LCU单元分割(续)
- error: undefined reference to 'vtable for XXXXXXXX'
- Hadoop 各节点负载均衡