美文网首页
每天进步一点点2

每天进步一点点2

作者: IOS_Wek | 来源:发表于2018-07-26 16:23 被阅读9次

今天要说的是AutoreleasePool 的数据结构

其实AutoreleasePool 的本质是一个指向AutoreleasePage 双向链表的一个指针。

1,AutoreleasePool 的初始化是怎么样的?
例如@autoreleasePool {
//做了什么1:
void *atautoreleasepoolobj = objc_autoreleasePoolPush();
创建了autoreleasePage节点,并进了一个“POOL_SENTINEL”进去page里面做哨兵
//做了什么2
objc_autoreleasePoolPop(atautoreleasepoolobj);
释放哨兵之前的那些object
}

2,Autorelease 做了什么操作
可以看到同样是调用了autoreleaseFast这个函数,这个函数做了什么?
1,page有空闲地方,直接插入,更新栈顶
2,page没有空闲,新建page,然后插入,
3,没有page,新建page,然后插入。

3,objc_autoreleasePoolPop(atautoreleasepoolobj); 做了什么?
它就把哨兵前面的object全部都出栈。

4,子线程和 autoreleasepool 的关系?

这么回答吧:子线程和runloop是一一对应的,子线程开启了runloop之后,runloop 会维护一份自己的Autoreleasepool,所以子线程里面的autorelease的对象就会由这个autoreleasepool 去控制什么时候pop掉。
如果子线程没有开启runloop呢?那么autorelease的对象怎么办呢?同样会添加到autoreleasePool结构里面的autoreleasePage里面。

相关文章

  • 目标与行动相结合

    每天进步一点点,记住方向,每天进步一点点!

  • 每天进步一点点

    每天进步一点点,成长足迹看得见。 每天进步一点点,走向成功是必然。 每天进步一点点,前进不止一小点。 每天进步一点...

  • 2017.8.9

    每天进步一点点 所谓的成长就是每天进步一点点,每周进步点点,每年进步一点点,然后观察复利效应,应该有不错的收益。 ...

  • 主动与被动的进步

    每天进步一点点,但是每天不会主动进步一点点。 每天做好这些事情,让自己每天都保持持续的进步。 随着时间的累积,年龄...

  • 集美与爱于一身的红玫瑰

    每天进步一点点,坚持就会进步

  • 人生冠军组33号学员bunnychen开营作业

    21天为梦想,坚持每天学习一点点,每天进步一点点: 1. 每天坚持早睡早起(23:00~5:50) 2. 每天坚持...

  • 亲子日记 469

    每天进步一点点•ᴗ•-2- 从平凡到卓越的183个道理•ᴗ•

  • 临摹强化基本技能-如何看思维导图

    每天坚持一点点 每天进步一点点

  • 2018

    每天进步一点点。 每天开心一点点。

  • 每天一小步

    每天多做一点点,就是成功的开始;每天多创新一点点,就是领先的开始;每天多学一点点,就是进步的开始;每天多进步一点点...

网友评论

      本文标题:每天进步一点点2

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