美文网首页
iOS Runtime

iOS Runtime

作者: Mannyao | 来源:发表于2022-03-07 14:36 被阅读0次

    retain、release 的实现机制?

    1. Retain的实现机制。
      SideTable& table = SideTables()[This];

    size_t& refcntStorage = table.refcnts[This];

    refcntStorage += SIZE_TABLE_RC_ONE;

    1. Release的实现机制。
      SideTable& table = SideTables()[This];

    size_t& refcntStorage = table.refcnts[This];

    refcntStorage -= SIZE_TABLE_RC_ONE;
    二者的实现机制类似,概括讲就是通过第一层 hash 算法,找到 指针变量 所对应的 sideTable。然后再通过一层 hash 算法,找到存储 引用计数 的 size_t,然后对其进行增减操作。retainCount 不是固定的 1,SIZE_TABLE_RC_ONE 是一个宏定义,实际上是一个值为 4 的偏移量


    https://juejin.im/post/6844903586216804359#heading-23

    相关文章

      网友评论

          本文标题:iOS Runtime

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