Object C的Categories
来源:互联网 发布:linux 文件读写 c程序 编辑:程序博客网 时间:2024/05/16 18:41
Category提供一种为某个类添加方法而又不必编写子类的途径。
假设有这样一个类CarInfo:
#import <Foundation/Foundation.h>@interface CarInfo : NSObject { } -(void)sayCarBrand; @end @implementation CarInfo -(void) sayCarBrand{ NSLog(@"Car brand: Golf"); } @end
我可以用Category为该类增加新的方法:
#import <Foundation/Foundation.h> #import "CarInfo.h"@interface CarInfo(CarInfoCategory) -(void)sayCarBrandChinese; @end @implementation CarInfo(CarInfoCategory) -(void)sayCarBrandChinese{ NSLog(@"汽车品牌:高尔夫"); } @end
这里的Category增加了一个新的方法,用来显示汉字名称。可在其他代码中直接调用,就如同调用CarInfo其他实例方法一样:
CarInfo *carInfo=[[CarInfo alloc] init];[carInfo sayCarBrandChinese];
这种效果是Java做不到的。这得益于ObjC语言方法调度程序这一特殊机制。
如果方法名称相同会怎样?比如:
#import <Foundation/Foundation.h> #import "CarInfo.h"@interface CarInfo(CarInfoCategory) -(void)sayCarBrand; @end @implementation CarInfo(CarInfoCategory) -(void)sayCarBrand{ NSLog(@"汽车品牌:高尔夫"); } @end
再次调用:
CarInfo *carInfo=[[CarInfo alloc] init]; [carInfo sayCarBrand];
会发现,打印的是category中的方法,而不是类的实例方法。因为category优先于类实例方法。
0 0
- object-c的Categories
- Object C的Categories
- Object-C Categories和Protocols
- Object-C Categories和Protocols
- Object-C Categories和Protocols
- Objective-c的Categories和protocols
- objective-c的categories(分类)
- Objective-C: Categories
- Categories in Objective-C
- Objective-C:Categories
- [Objective-C] Categories 小例子
- C++Iterator Categories(迭代器种类)
- Categories
- Categories
- Categories
- Categories
- OC的Categories(分类)
- OC的Categories(分类)
- 做推广真的是很累的活
- 改变你的游戏开发17条价值观
- JVM系列三:JVM参数设置、分析
- <aop:config>报错
- 智能手机收听mms网络英文电台
- Object C的Categories
- hdu 2216 Game III(bfs)
- 新手CrossApp 之CAProgress小结
- JVM系列四:生产环境参数实例及分析【生产环境实例增加中】
- 顺序存储结构和链式存储结构的选择
- 内核发出的sigkill信号
- javascript 中return的作用
- JVM系列五:JVM监测&工具[整理中]
- android广播(内部类)使用