autoreleasePool的底层数据结构,为什么要这么设计?
autorealeasepool其实并没有其自身的结构,它是基于多个Autorelease PoolPage(一个C++类)以双向链表组合起来的结构,其基本操作都是简单封装了AutoreleasePoolPage的操作方法。例如,可以通过push操作添加对象,或者通过pop操作弹出对象,以及通过release操作释放销毁对象,对应的3个封装后的操作函数为:objc_autoreleasepoolPush、objc_autoreleasepoolPop和objc_autorelease。自动释放池将用完的对象集中起来,统一释放,起到延迟释放对象的作用。