美文网首页
OC备忘录—Runtime关联对象

OC备忘录—Runtime关联对象

作者: 笑看静香日胖虎 | 来源:发表于2017-02-06 19:41 被阅读5次

当使用系统类的时候如果需要添加一个属性 可以选择新建立一个类继承该系统类在新建类中添加属性,和使用扩展类。

例如:当前使用UIViewController的扩展类,为其添加一个类型为NSString的对象 对象名为test;

@property(nonatomic,copy)NSString *test;

通过objc_setAssociatedObject在其set方法中将该属性关联到该类

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

objc_setAssociatedObject(self, @selector(test), test, OBJC_ASSOCIATION_COPY_NONATOMIC);

}

void objc_setAssociatedObject(id object, const void *key, id value, objc _AssociationPolicy policy)

object:与谁关联,通常是传self

key:唯一键,在获取值时通过该键获取,通常是使用static

const void *来声明

value:关联所设置的值

policy:内存管理策略,比如使用copy

通过objc_getAssociatedObject在该属性的get方法中得到其值

-(NSString *)test

{

return objc_getAssociatedObject(self, @selector(test));

}

id objc_getAssociatedObject(id object, const void *key)

object:与谁关联,通常是传self,在设置关联时所指定的与哪个对象关联的那个对象

key:唯一键,在设置关联时所指定的键

相关文章

网友评论

      本文标题:OC备忘录—Runtime关联对象

      本文链接:https://www.haomeiwen.com/subject/qauuittx.html