美文网首页
Category &associate 关联对象

Category &associate 关联对象

作者: coder_feng | 来源:发表于2019-05-06 10:00 被阅读0次

    手动为Category生成一个成员变量

    默认情况下,因为分类底层架构的限制,不能添加到成员变量到分类中,但是可以通过关联对象间接实现,这里我先通过我的方式手动实现,然后再通过关联对象提供的API实现,我的实现效果图如下:

    测试效果图 源码实现图

    关联对象提供的API

    添加关联对象 void objc_setAssociatedObject(id object, const void * key,id value, objc_AssociationPolicy policy)

    获得关联对象 id objc_getAssociatedObject(id object, const void * key)

    移除所有关联对象

    void objc_removeAssociatedObjects(id object)

    代码中key的常见用法

    1.static void *SLKey = &SLKey;

    到时候直接使用SLKey就可以了

    2.static char SLKey;

    到时候使用&SLKey;

    3.使用get方法作为key

    到时候直接使用@selector(getter)

    objc_AssociationPolicy

    修饰符

    关联对象原理图

    代码架构图 分布图

    关联对象本身不是存储在被关联对象的内存中,而是存贮在一个全局统一的AssocaitionsManager中,通过map找到object对应的ObjectAssociationMap,然后从中根据key获取相应的value和policy

    可以添加微信一起交流学习:fslskz

    相关文章

      网友评论

          本文标题:Category &associate 关联对象

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