分类添加属性,运行时添加对象属性和基本类型属性

一般分类(Category)是不允许添加属性的,只能进行方法的扩展,分类中不会自动生成set和get方法,更不会出现_object这样的属性名。运行时能帮我们解决这个问题,自己添加set和get的方法。本文将介绍对象属性和基本类型属性两种运行时代码的添加。(其实只需要把基本类型转换为对象就可以了)	


都是要在.m文件中添加运行时头文件的。

#import



1、对象属性的添加:

@property(nonatomic,strong)NSString* test;

定义char *类型的标志符:

static char* testStr = "TESTSTR";

运行时的set和get代码:

- (void)setTest:(NSString *)test{

    objc_setAssociatedObject(self, testStr, test, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}


- (NSString *)test{

    return objc_getAssociatedObject(self, testStr);

}



2、基本类型添加


@property(nonatomic,assign)int weight11;

static char strKey = 'k';

- (int)weight11{

    return [objc_getAssociatedObject(self, &strKey) intValue];

}


- (void)setWeight11:(int)weight11{

    return objc_setAssociatedObject(self, &strKey, @(weight11), OBJC_ASSOCIATION_ASSIGN);

}



好了,用法就是这样,至于想了解内部,慢慢来吧。


你可能感兴趣的:(常用代码)