您的位置:首页 > 移动开发 > Objective-C

[Objective-C] 005_Category(类别)

2015-06-07 22:37 405 查看
  Category的实际作用就是为已有的类来添加方法。为现有的类添加的方法可以先不用实现,在需要的时候再实现也是可以的。在我们的实际代码中如何来实现[b]Category的呢?我们上篇的Person 类为例。[/b]

/////////////////    .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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: