美文网首页
(Objective-C) 通过关联对象给分类添加成员变量

(Objective-C) 通过关联对象给分类添加成员变量

作者: 布呐呐u | 来源:发表于2022-06-12 17:56 被阅读0次
  • 使用给定的键和关联策略为指定对象设置关联值
objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key,
                         id _Nullable value, objc_AssociationPolicy policy)
    OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);

  • 返回与给定键的指定对象关联的值
objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)
    OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);
  • Example
// set method
- (void)setTestName:(NSString *)testName {
    objc_setAssociatedObject(self, @selector(testName), testName, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

// get method
- (NSString *)testName {
    return  objc_getAssociatedObject(self, _cmd);
}

// dealloc
- (void)dealloc {
    objc_removeAssociatedObjects(self);
}

objc_AssociationPolicy

  • OBJC_ASSOCIATION_ASSIGN (assign)
  • OBJC_ASSOCIATION_RETAIN_NONATOMIC (strong,nonatomic)
  • OBJC_ASSOCIATION_COPY_NONATOMIC (copy, nonatomic)
  • OBJC_ASSOCIATION_RETAIN (strong, atomic)
  • OBJC_ASSOCIATION_COPY (copy, atomic)

相关文章

  • OC语言之category_关联对象的本质源码解析

    关联对象 能否给分类添加"成员变量"? 使用关联对象技术为分类添加"成员变量" 关联对象添加的"成员变量"添加到了...

  • iOS关联对象的底层实现

    分类不能直接添加成员变量,可以通过关联对象间接达到添加成员变量的效果,不能添加成员变量是由于分类的底层结构体是这样...

  • Objective - C 关联对象(一) 如何添加"成员变量"

    (一)分类 - 能否添加“成员变量” 因为分类底层结构的限制,不能直接添加成员变量到分类中 但可以通过关联对象来间...

  • iOS关联对象的源码探究

    本文探究问题:- 怎么通过关联对象为分类category添加成员变量?- 添加的成员变量被存储在哪了? 1.为分类...

  • 关联对象

    如何实现给分类“添加成员变量”? 默认情况下,因为分类底层结构的限制,不能添加成员变量到分类中。可以通过关联对象来...

  • iOS面试题-能为分类添加成员变量吗?怎么实现

    不能在类的声明和实现中为分类添加成员变量,但是可以通过关联对象的技术,达到为分类添加成员变量的效果。

  • OC关联对象源码解析

    OC关联对象源码解析 默认情况下分类是不能添加成员变量的,我们可以利用Runtime通过关联对象间接实现给分类添加...

  • 关联对象

    能否为分类添加 “成员变量” ? 为分类所添加的成员变量添加在哪里? 所有对象的关联内容都在同一个全局容器内关联对...

  • 使用 RunTime 给分类添加属性

    通常在分类中只能声明方法,不能添加属性变量,但是其实可以通过关联对象(Objective-C Associated...

  • OC语法 Category底层结构

    用途 为已有类添加额外的实例方法、类方法,属性,协议,或通过runtime 关联对象 间接添加成员变量。分类内添加...

网友评论

      本文标题:(Objective-C) 通过关联对象给分类添加成员变量

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