Category提供一种为某个类添加方法而又不必编写子类的途径。
假设有这样一个类CarInfo:
|
|
#import <Foundation/Foundation.h> |
我可以用Category为该类增加新的方法:
|
|
#import <Foundation/Foundation.h> #import "CarInfo.h" |
这里的Category增加了一个新的方法,用来显示汉字名称。可在其他代码中直接调用,就如同调用CarInfo其他实例方法一样:
CarInfo *carInfo=[[CarInfo alloc] init]; |
这种效果是Java做不到的。这得益于ObjC语言方法调度程序这一特殊机制。
如果方法名称相同会怎样?比如:
#import <Foundation/Foundation.h> #import "CarInfo.h" |
再次调用:
CarInfo *carInfo=[[CarInfo alloc] init]; [carInfo sayCarBrand]; |
会发现,打印的是category中的方法,而不是类的实例方法。因为category优先于类实例方法。
本文详细介绍了Objective-C中的Category机制如何为已有类添加新方法,包括如何定义Category,如何在代码中调用新增的方法,并讨论了与Java的对比,以及方法名冲突时的行为。
2803

被折叠的 条评论
为什么被折叠?



