//
// main.m
// Category基本使用:1.不修改类而扩充类。2.对于一个庞大的类,分模块开发。
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+NJ.h"
/*
方法:
方法的声明:
方法的实现:
所以: 通过分类给某一个类扩充方法, 也分为声明和实现两个部分
// 分类的声明
@interface ClassName (CategoryName)
NewMethod; //在类别中添加方法
//不允许在类别中添加变量
@end
ClassName: 需要给哪个类扩充方法
CategoryName: 分类的名称
NewMethod: 扩充的方法
// 分类的实现
@implementation ClassName(CategoryName)
NewMethod
@end
ClassName: 需要给哪个类扩充方法
CategoryName: 分类的名称
NewMethod: 扩充的方法
*/
int main(int argc, const char * argv[]) {
Person *p = [[Person alloc] init];
p.age = 30;
[p say];
[p playFootball];
[p playBasketball];
NSString;
NSArray;
return 0;
}
// Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, assign) int age;
- (void)say;
@end
// Person.m
#import "Person.h"
@implementation Person
//-(void)say
//{
// NSLog(@"age = %i", _age);
//}
-(void)say{
NSLog(@"age= %i",_age);
}
@end
//
// Person+NJ.h
#import "Person.h"
@interface Person (NJ)
// 扩充方法
- (void)playFootball;
- (void)playBasketball;
@end
//
// Person+NJ.m
#import "Person+NJ.h"
@implementation Person (NJ)
// 实现扩充方法
- (void)playFootball
{
NSLog(@"%s,%i", __func__,[self age]);
}
- (void)playBasketball
{
NSLog(@"%s,%i", __func__,[self age]);
}
@end