您的位置:首页 > 编程语言 > Go语言

给category增加属性

2016-07-19 16:26 204 查看
4000

#import<Foundation/Foundation.h>

#import<objc/runtime.h>

@interfaceNSObject
(CategoryWithProperty)

/** * 要在Category中扩展的属性 */

const char *name = "property";

@property (nonatomic,strong)NSObject
*property;

@end@implementationNSObject
(CategoryWithProperty)

- (NSObject
*)property 

{  

return objc_getAssociatedObject(self,name);

}

- (void)setProperty:(NSObject
*)property 

{   

objc_setAssociatedObject(self,name,

property, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

//以上,便可以给property赋值或获得值,类似get和set方法

另外 可以使用void
objc_removeAssociatedObjects(id object)函数移除所有关联。

需要说明一点的是,关联不一定要有属性,但当属性名与关联名称相同时,关联的就是属性。

也可以理解成,重写get,set方法,但里面的实现使用运行时特性。

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: