美文网首页
面试题:weak底层实现原理

面试题:weak底层实现原理

作者: 常在士心 | 来源:发表于2021-08-26 13:57 被阅读0次

weak表其实是一个哈希表,key是所指对象的指针,value是weak指针的地址数组。(value是数组的原因是:因为一个对象可能被多个弱引用指针指向)

Runtime维护了一张weak表,用来存储某个对象的所有的weak指针。
1、初始化开始时,会调用objc_initWeak函数,初始化新的weak指针指向对象的地址。
2、紧接着,objc_initWeak函数里面会调用objc_storeWeak() 函数,objc_storeWeak() 函数的作用是用来更新指针的指向,创建弱引用表。
3、在最后会调用clearDeallocating函数。而clearDeallocating函数首先根据对象的地址获取weak指针地址的数组,然后紧接着遍历这个数组,将其中的数组开始置为nil,把这个entry从weak表中删除,最后一步清理对象的记录。

相关文章

  • iOS底层原理:weak的实现原理

    iOS底层原理:weak的实现原理iOS底层原理:weak的实现原理

  • iOS weak 底层实现原理(二):objc-weak 函数列

    前言 为了全面透彻的分析 weak 的实现原理,前面 iOS weak 底层实现原理(一):SideTable|s...

  • weak、strong、@ property

    面试题:weak实现原理? 一、weak weak 基本用法 weak 是弱引用,用 weak 来修饰、描述所引用...

  • 面试题:weak底层实现原理

    weak表其实是一个哈希表,key是所指对象的指针,value是weak指针的地址数组。(value是数组的原因是...

  • weak底层实现原理

    一、weak基本用法 weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引用对...

  • weak 底层实现原理

    总结:weak 是Runtime维护了一个hash(哈希)表,用于存储指向某个对象的所有weak指针。weak表其...

  • weak底层实现原理

    前言 weak用于一些对象相互引用的时候,避免出现强强引用,对象不能被释放,出现内存泄露的问题。 weak 关键字...

  • weak底层实现原理

    一、weak 基本用法 weak 是弱引用,用 weak 来修饰、描述所引用对象的计数器并不会增加,而且 weak...

  • IOS基础知识-weak原理篇

    weak底层原理 首先需要看下weak编译后的实现,比如有如下代码: 在通过clang编译后,代码实现如下: 编译...

  • weak

    weak的底层实现weak 弱引用的实现方式

网友评论

      本文标题:面试题:weak底层实现原理

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