美文网首页
OC-关联对象

OC-关联对象

作者: 小李不木 | 来源:发表于2019-06-27 10:35 被阅读0次

    分类中不能添加成员变量

    需要在category中添加对象属性,可以用关联对象来实现。

    分类中添加关联对象

    关联对象由AssociationsManager 管理并在AssociationsMapHash 中储存。

    AssociationsManager里面是由一个静态AssociationsHashMap来存储所有的关联对象的。这相当于把所有对象的关联对象都存在一个全局map里面。而map的的key是这个对象的指针地址,value是另外一个AssociationsHashMap,里面保存了关联对象的key-value对。

    释放时机

    runtime 的销毁对象时,objc_destructInstance里面会判断这个对象有没有关联对象,如果有,会调用 object_remove_assocations做关联对象的清理工作。

    如果给关联对象赋值为nil,默认就会销毁移除这个关联记录。

    dealloc  方法内部会自动判断是否有关联对象,从而进行销毁。

    参考地址:

    关联对象:iOS之AssociateObject(关联对象) - 简书

    关联对象的销毁:

    iOS dealloc方法都做了哪些东西? - 简书

    iOS 底层 - dealloc 的底层实现 - 简书

    相关文章

      网友评论

          本文标题:OC-关联对象

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