美文网首页
说说你理解weak属性?

说说你理解weak属性?

作者: Adam_潜 | 来源:发表于2018-12-09 16:31 被阅读7次

weak 可以用于delegate
weak底层是hashmap
key是对象的地址
value是weak指针的数组(因为可能有多个weak指针指向这个对象)

初始化的时候, runtime会调用objc_initWeak函数,
initweak函数会初始化一个新的weak指针指向对象的地址

添加引用的时候, 会调用storeweak函数, storeweak的作用是更新指针指向
创建对应的弱引用表

释放时, 调用clearDealocating函数, 会根据对象地址获取所有weak指针地
址的数组, 然后遍历这个数组把其中的数据设为nil, 最后把这个entry从weak
表中删除, 最后清理对象的记录

相关文章

  • 说说你理解weak属性?

    weak 可以用于delegateweak底层是hashmapkey是对象的地址value是weak指针的数组(因...

  • 面试题收录

    1. KVO实现原理 2. 说说你理解的埋点3. 消息转发机制原理4. 说说你理解的weak属性5. 假如cont...

  • 2018年11月最新面试题整理

    ⽬目录: 基础 1 、如何令⾃自⼰己所写的对象具有拷⻉贝功能? 2、说说你理理解weak属性? 3、题⽬目:Swi...

  • 理解weak属性

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

  • 2018iOS面试题收集

    题目 如何令⾃己所写的对象具有拷贝功能? 说说你理解weak属性? Swift mutating关键字的使⽤? U...

  • 浅谈weak属性的理解

    weak实现原理: Runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一...

  • runtime 如何实现 weak 属性

    要实现 weak 属性,首先要搞清楚 weak 属性的特点: weak 此特质表明该属性定义了一种“非拥有关系” ...

  • 问题[○○○○]:runtime 如何实现 weak 属性

    要实现 weak 属性,首先要搞清楚 weak 属性的特点: weak 此特质表明该属性定义了一种“非拥有关系” ...

  • runtime 如何实现 weak 属性?

    要实现 weak 属性,首先要搞清楚 weak 属性的特点: weak 此特质表明该属性定义了一种“非拥有关系” ...

  • iOS开发-修饰代理delegate用weak还是assign?

    答案:weak 分析: 1、weak在属性所指的对象遭到摧毁时,系统会将weak修饰的属性对象的指针指向nil,...

网友评论

      本文标题:说说你理解weak属性?

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