// // 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