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

关联对象(给分类添加成员变量)

作者: 大鹅ne | 来源:发表于2020-04-15 22:46 被阅读0次

🌟默认情况下,因为分类底层结构的限制,不能田间成员变量到分类中。但可以通过关联对象来间接实现
🌟关联对象提供了以下api
添加关联对象

void
objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key,
                         id _Nullable value, objc_AssociationPolicy policy)

获得关联对象

id _Nullable
objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)

移除所有的关联对象

void
objc_removeAssociatedObjects(id _Nonnull object)

🌟key的常见用法

static const void * MyKey = & MyKey;
objc_setAssociatedObject(obj, MyKey,
                         value,OBJC_ASSOCIATION_RETAIN_NONATOMIC)
objc_getAssociatedObject(obj, MyKey)

static const char MyKey;
objc_setAssociatedObject(obj,& MyKey,
                         value,OBJC_ASSOCIATION_RETAIN_NONATOMIC)
objc_getAssociatedObject(obj, &MyKey)

使用属性名作为key

objc_setAssociatedObject(obj,@"property",
                         value,OBJC_ASSOCIATION_RETAIN_NONATOMIC)
objc_getAssociatedObject(obj, @"property")

使用get方法的@selecot作为key

objc_setAssociatedObject(obj,@selector(getter),
                         value,OBJC_ASSOCIATION_RETAIN_NONATOMIC)
objc_getAssociatedObject(obj, @selector(getter))

Screen Shot 2020-04-15 at 10.45.26 PM.png

相关文章

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

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

  • 关联对象

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

  • iOS关联对象的底层实现

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

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

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

  • iOS关联对象的源码探究

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

  • 关联对象

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

  • iOS - 关联对象

    一、简介 关联对象的使用一般用于给 Category 添加成员变量。我们知道,分类添加属性只能生成 setter/...

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

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

  • OC关联对象源码解析

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

  • 2、关联对象知识点整理

    由于分类是不能直接添加成员变量的,因此需要使用关联对象技术为分类添加成员变量,由此引出几个问题: 问题1❓:什么是...

网友评论

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

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