从RunTime源码回看weak底层实现2023-07-28 15:09:10 文章目录 关于我的仓库 前言 准备工作 数据模型 SideTables() StripedMap 补充知识:哈希桶 补充知识:模版函数 补充知识:alignas() 补充知识:重载 SideTable spinlock_t slock【自旋锁】 补充知识:锁 补充知识:分离锁&&拆分锁 补充知识:自旋锁 补充知识:并行&&并发 苹果的抉择 RefcountMap refcnts【存放引用计数】 DenseMap 补充知识:LLVM 哈希实现 weak_table_t weak_table weak_entry_t *weak_entries【存放weak指针】 结构总结 SideTables以及SideTable的关系 weak相关的方法 objc_initWeak(id *location, id newObj) storeWeak(id *location, objc_object *newObj) weak_unregister_no_lock weak_register_no_lock dealloc后将weak指针置nil【weak_clear_no_lock(weak_table_t *weak_table, id referent_id) 】 方法总结 关于我的仓库 这篇文章是我为面试准备的iOS基础知识学习中的一篇 我将准备面试中找到的所有学习资料,写的Demo,写的博客都放在了这个仓库里iOS-Engineer-Interview 欢迎star 上一篇:R - Weak Pair HDU - 5877 线段树下一篇:iOS---------开发中 weak和assign的区别