美文网首页
iOS底层day5 - 探索对象关联

iOS底层day5 - 探索对象关联

作者: 宁夏灼雪__ | 来源:发表于2018-09-19 11:49 被阅读0次

    Q: 分类可以添加成员变量吗

    分类不可以直接添加成员变量,但是可以间接添加
    在类中声明一个属性的时候,编译器会帮我们完成两件事:
    生成_属性的成员变量
    声明并实现set方法和get方法
    而分类中声明一个属性的时候,他只会帮我们做一件事,就是声明属性的set方法和get方法
    如图:

    8F1FFEEC-F2D3-4798-B411-A71266A4FE63.png
    所以我们需要手动地实现setget方法,这里就用到了runtime对象关联

    API

    objc_setAssociatedObject :给某个对象绑定关联对象

    参数:
    object : 需要关联的某个对象
    key :为一个指针即可,这里可以使用一个 &key,或者@selector(属性)
    value :需要关联的对象
    policy:关联策略,可选为一个枚举,对应属性的assigncopystrong等即可

    objc_getAssociatedObject :获取某个对象所关联的key的对象

    参数:
    object : 需要获取关联的某个对象
    key :为一个指针即可,这里可以使用一个 &key,或者@selector(属性)

    objc_removeAssociatedObjects :移除某个对象的所有关联对象

    参数:
    object : 需要移除的某个对象

    示例:


    3D75E5FF-BFA9-45B6-B411-533DB436D3DE.png
    E78E32A6-66B6-4664-A036-01200E7D1A46.png

    相关文章

      网友评论

          本文标题:iOS底层day5 - 探索对象关联

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