runtime/maptable.h 作用与实现原理
objc4 runtime NXMapTable 开放寻址哈希表 runtime/maptable.h runtime/maptable.h 作用与实现原理 runtime/maptable.h 定义了 Objective-C runtime 里旧 NeXT 风格的 NXMapTable:一个通用的 key - value 指针映射表。 它不拥有业务对象,只负责把指针或整数形式的 key 映射到指针或整数形式的 value, 并通过回调把“怎么 hash、怎么比较、释放时怎么处理”交给调用方决定。 存储模型连续桶数组,每个桶是 {key, value}。 冲突处理开放寻址 + 线性探测。 扩容阈值元素数超过桶数的 75% 后翻倍重哈希。 runtime 用途类名表、协议表、future class 表、少量 meta 到 non-meta 映射。 阅读路径 它解决什么问题 和 hashtable2 的区别 核心数据结构 Prototype 回调机制 查找、插入、删除、扩容流程 带注释核心代码 runtime 中的实际使用 必须记住的约束 1. 它解决什么问题 runtime 需要维护很多“名字到结构体指针”“元类到类”“未来会出现的类名到占位 Class”的映射。 这些映射发生在启动、加载镜像、注册类、查找协议等低层路径上,不能依赖 Objective-C 容器对象。 NXMapTable 就是一个 C 接口的轻量哈希表。 它是什么 一个 void * key 到 void * value 的映射表。key 和 value 可以是指针,也可以把整数强转成指针使用。 ...