OBjective-c category(目录) 用途简介


1 category 简介

采用category可以扩展一个类,

在原有类的基础上进行方法的扩展(对原有类添加一些新的行为),

使用category扩展后的类,不需要更改原有的引用方式(使用这种方式,我们可以扩展系统提供给我们的类)


2 category 用法简介及举例说明

category 主要应用在对现有类的扩展,对类中方法进行归类


举例说明:

main.m 

#import "Foundation /Foundation.h"
#import "testClass.h"
#import "testClassExtend.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        testClass *t = [[testClass alloc] init];
        [t printInfo];  //原有类
        [t printInfo2]; //扩展类
     }
    return 0;
}

testClass.h

#import "Foundation Foundation.h"
@interface testClass :NSObject
-(void)printInfo;
@end

testClass.m

#import "testClass.h"
@implementation testClass
-(void)printInfo{
    NSLog(@"新建类testClass");
}
@end


testClassExtend.h(采用目录方式扩展类)

#import "testClass.h"
@interface testClass (testExtend)
-(void)printInfo2;
@end

testClassExtend.m

#import "testClassExtend.h"(采用目录方式扩展类)
@implementation testClass(testExtend)
-(void)printInfo2{
    NSLog(@"printinfo2");
}
@end
 


3 category 使用优缺点

缺点: category 不可以添加新的实例变量
category不能覆盖现有类的方法