美文网首页IOS开发知识点
iOS进阶-runtime机制之weak、引用计数管理

iOS进阶-runtime机制之weak、引用计数管理

作者: 枫叶无处漂泊 | 来源:发表于2020-07-08 12:05 被阅读0次

前言

在runtime管理对象的引用计数和weak引用时,这四个数据结构非常重要,分别是SideTables、SideTable、weak_table_t和weak_entry_t。

它们之间的关系

在runtime内存空间中,

  • SideTables是一个64个元素长度的hash数组,里面存储着64个SideTable。
  • SideTables的hash键值就是一个对象obj的address:
  • 一个obj对应一个SideTable
  • 一个SideTable会对应多个obj,毕竟总共就64个SideTable,多个obj共用一个SideTable。
  • SideTable中有两个成员分别是:
    • RefcountMap refcnts; // 对象引用计数相关 map
      • refcents是一个hash map,其key是obj的地址,而value,则是obj对象的引用计数
    • weak_table_t weak_table; // 对象弱引用相关 table
      • weak_table则存储了弱引用obj的指针的地址
      • 其本质是一个以obj地址为key,弱引用obj的指针的地址作为value的hash表。
      • hash表的节点类型是weak_entry_t。

相关文章

  • iOS进阶-runtime机制之weak、引用计数管理

    前言 在runtime管理对象的引用计数和weak引用时,这四个数据结构非常重要,分别是SideTables、Si...

  • Runtime源码剖析---图解引用计数与weak

    Runtime源码剖析---图解引用计数与weak 在iOS开发过程中,会经常使用到一个修饰词“weak”,使用场...

  • iOS 内存管理机制

    iOS内存管理机制原理 iOS内存管理机制的原理是引用计数,引用计数是一个简单而有效的管理对象生命周期的方式。当这...

  • iOS面试知识点

    1、ios内存管理机制 iOS内存管理机制的原理是引用计数,当这块内存被创建后,它的引用计数0->1,表示有一个对...

  • ios常见面试题总结

    1.谈一谈IOS内存管理机制。 IOS内存管理机制的原理是引用计数,当这块内存被创建后引用计数加1,这时若果有另一...

  • iOS日记4-weak关键字

    1.runtime中如何实现weak 生成weak对象 weak对象有一张weak表(类似引用计数表),是作为散列...

  • 内存管理-引用计数的存储

    在iOS中,内存管理是通过引用计数来管理的,那么对象的引用计数值存储在哪里?在Runtime(一)中介绍了isa指...

  • 内存管理

    iOS 的内存管理方案有哪些? RC:引用计数机制。采用引用计数来管理对象的内存,当需要持有一个对象时,使它的引用...

  • iOS 深拷贝浅拷贝与@property 引用计数关键字Stro

    iOS 深拷贝浅拷贝与@property 引用计数关键字Strong,Copy,Weak,Assign iOS 深...

  • Retain&Release解读

    iOS通过引用计数(Reference Counting)机制来管理内存,当一个对象被创建出来时,它的引用计数从0...

网友评论

    本文标题:iOS进阶-runtime机制之weak、引用计数管理

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