//
// main.m
// Category
//
// Created by zhaogang on 16/5/3.
// Copyright © 2016年 zhaogang. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+zhaogang.h"
/*
分类:可以给某一个类扩充一些方法(不修改原来的代码)
声明
@interface 类名(分类名称)
@end
实现
@implementation 类名(分类名称)
@end
*/
/*
分类的作用:在不改变原来内容的基础上,可以为类增加一些方法
使用注意:
1. 只能增加方法,不能增加成员变量
2. 分类方法实现中可以访问原来类中声明的成员变量
3. 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
4. 方法调用优先级:分类(最后参与编译的分类优先)-->原来类-->父类
*/
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [[Person alloc] init];
[p test];
[p study];
}
return 0;
}
Person.m
//
// Person.m
// Category
//
// Created by zhaogang on 16/5/3.
// Copyright © 2016年 zhaogang. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)test
{
NSLog(@"test");
}
@end
Person+yy.m
//
// Person+yy.m
// Category
//
// Created by yy on 16/5/3.
// Copyright © 2016年 yy. All rights reserved.
//
#import "Person+yy.h"
@implementation Person (yy)
- (void)study
{
NSLog(@"study------%d",_age);
}
@end