美文网首页iOS面试
iOS 内存管理面试题(`retain`、`release` 的

iOS 内存管理面试题(`retain`、`release` 的

作者: 程序员_秃头怪 | 来源:发表于2019-08-07 16:29 被阅读9次

retainrelease 的实现机制?

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 的偏移量。

热文推荐

2019 全网 iOS 面试题以及答案总结!

相关文章

网友评论

    本文标题:iOS 内存管理面试题(`retain`、`release` 的

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