相关资料:
Objective-C Autorelease Pool 的实现原理
AutoreleasePool是什么,有什么用?
自动释放池,一个无需手动释放内存的对象指针存储池
实现这样的存储池有什么要素?
可伸缩的存储空间
能获取的存储空间边界的方式
AutoreleasePool支持嵌套:所以每个存储空间内需要记忆嵌套的存储空间标志
oc实现?
这么一段存储空间,oc的实现是双向链表,链表的每个节点是等大小的堆栈,当节点堆栈存满后再创建子节点存储,每个堆栈的底部会存储等量的信息,包括空间边界即指向开始位置和结束位置的指针
加入autoreleasepool:哨兵对象(POOL_SENTINEL)入栈
加入autoreleasepool内的对象:对象入栈,栈顶指针(*next指针)移动。
移除autoreleasepool:传入需要移除的地址,计算得到地址所在的链表节点,向下找到最近的哨兵对象,移除哨兵对象后的所有元