[Objective-C] 005_Category(类别)
2015-06-07 22:37
405 查看
Category的实际作用就是为已有的类来添加方法。为现有的类添加的方法可以先不用实现,在需要的时候再实现也是可以的。在我们的实际代码中如何来实现[b]Category的呢?我们上篇的Person 类为例。[/b]
现在现有的Person 类中并没有driving的方法,那我们就来为它添加driving,我们新建一个.h和.m文件,名称叫做Person+Driving(类名+方法名),这样命名有一个好处,就是一眼便知道为哪一个类添加了什么方法。
我们现在来看下测AppDelegate中添加测试。
测试结果:
2015-06-07 22:34:22.247 Attendance[15791:2195987] 我的名字叫:隔壁老王今年36岁我是一名男 Person
2015-06-07 22:34:22.248 Attendance[15791:2195987] 昨晚特斯拉没充电,今天开的是宝马X6
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669073.html
///////////////// .h //////////////// #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic,copy)NSString *name; @property (nonatomic,assign)int age; @property (nonatomic,assign)NSString *sex; - (void)printInfo; @end ///////////////// .m //////////////// #import "Person.h" @implementation Person @synthesize name = _name,sex = _sex; @synthesize age = _age; - (void)printInfo { NSLog(@"我的名字叫:%@ 今年%d岁 我是一名%@ %@",self.name,self.age,self.sex,NSStringFromClass([self class])); } @end
现在现有的Person 类中并没有driving的方法,那我们就来为它添加driving,我们新建一个.h和.m文件,名称叫做Person+Driving(类名+方法名),这样命名有一个好处,就是一眼便知道为哪一个类添加了什么方法。
/////////////////// .h ////////////////////// #import <Foundation/Foundation.h> #import "Person.h" @interface Person(Person_Driving) - (void)driving; @end /////////////////// .m ////////////////////// #import "Person+Driving.h" @implementation Person(Person_Driving) - (void)driving { NSLog(@"昨晚特斯拉没充电,今天开的是宝马X6"); } @end
我们现在来看下测AppDelegate中添加测试。
#import "AppDelegate.h" #import "Teacher.h" #import "Student.h" #import "Person.h" #import "Cleaner.h" #import "Person+Driving.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { Person *p = [[Person alloc] init]; p.name = @"隔壁老王"; p.age = 36; p.sex = @"男"; [p printInfo]; [p driving]; return YES; } @end
测试结果:
2015-06-07 22:34:22.247 Attendance[15791:2195987] 我的名字叫:隔壁老王今年36岁我是一名男 Person
2015-06-07 22:34:22.248 Attendance[15791:2195987] 昨晚特斯拉没充电,今天开的是宝马X6
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669073.html
相关文章推荐
- 理解“属性”
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- CVPR2014 Objectness源码转换(完整版) VS2012 X64 –>win32
- object_c id 与 instancetype
- object-c面向对象2
- Object-C中的一些常见问题及解答
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
- objective-c 异常处理
- Objective C 中的nil,Nil,NULL和NSNull理解
- Object的notify,wait,notifyAll
- 错误:类型 'System.Object' 未定义或者不能引入项目
- Objective-C 给分类添加属性——关联对象
- [NSCFArray objectForKeyedSubscript:]
- Python标准库:内置函数type(object)
- Python标准库:内置函数type(object)
- Java Note - Everything is an object
- [Object c]_[初级]_[NSString常用方法的总结]
- Objective-C 常用字符串操作
- Objective-C 文件操作
- [C++/object c]_[初级]_[std::map容器的使用总结和NSDictionary词典使用总结]