分类Category的使用

2018-01-05  本文已影响0人  买买提不撸串

Category可以为已存在的类添加方法,包括系统类,原则不能添加属性,但添加不会报错,可是不能使用,要想用的话可以结合runtime使用

#import "Person.h"

@interface Person (Percate)

//分类中写了属性,用runtime机制实现setter、getter方法

@property(nonatomic,copy)NSString*str;

@end

.m文件中

#import "Person+Percate.h"

#import <objc/runtime.h>

static NSString *strKey=@"strKey"; //一个属性定义一个

@implementation Person (Percate)

-(void)setStr:(NSString *)str{

    objc_setAssociatedObject(self, &strKey, str,OBJC_ASSOCIATION_COPY);

    /*

    strong修饰的类型用 OBJC_ASSOCIATION_RETAIN_NONATOMIC

    copy  修饰的类型用 OBJC_ASSOCIATION_COPY

    assin 修饰的类型用 OBJC_ASSOCIATION_ASSIGN

    */

}

-(NSString*)str{

    return objc_getAssociatedObject(self, &strKey);

}

这样就可以正常使用了

有些为系统类添加的分类如:NSString、NSDate、UIImage、UILabel等不想在使用引入分类的头文件,那么可以把这些分类的头文件写在pch文件中

上一篇 下一篇

猜你喜欢

热点阅读