美文网首页
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