美文网首页
21.retain、release 的实现机制?

21.retain、release 的实现机制?

作者: lucdwy | 来源:发表于2019-06-28 18:59 被阅读0次

    1.Retain的实现机制。

    SideTable& table = SideTables()[This];
    
    size_t& refcntStorage = table.refcnts[This];
    
    refcntStorage += SIZE_TABLE_RC_ONE
    

    2.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://github.com/liberalisman/iOS-InterviewQuestion-collection/blob/master/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/21.%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E9%A2%98.md

    相关文章

      网友评论

          本文标题:21.retain、release 的实现机制?

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