黑幕背后的Autorelease

http://www.cnblogs.com/feng9exe/p/7239552.html

objc_autoreleasePoolPush的返回值正是这个哨兵对象的地址,被objc_autoreleasePoolPop(哨兵对象)作为入参,于是:

  1. 根据传入的哨兵对象地址找到哨兵对象所处的page
  2. 在当前page中,将晚于哨兵对象插入的所有autorelease对象都发送一次- release消息,并向回移动next指针到正确位置
  3. 补充2:从最新加入的对象一直向前清理,可以向前跨越若干个page,直到哨兵所在的page

假设这些都有线程持有,都可以解释通

和函数调用栈的原理类似。

最新文章

  1. Css3新特性总结之边框与背景(二)
  2. 应用程序无法正常启动0xc0150002(windows server 2003)
  3. asp.net mvc 多级文件夹
  4. How to backup your blogs on cnblogs
  5. [知识整理]Java集合(二) - Set
  6. jQuery代码优化:事件委托篇
  7. JS之事件(一)
  8. Python之路,Day17 - 分分钟做个BBS论坛
  9. SparseArray HashMap 稀疏数组 二分法
  10. call、apply以及bind
  11. 【BZOJ1012】【JSOI2008】最大数(线段树)
  12. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
  13. 客户化软件时代的前夜 ZT
  14. 关于IWMS中遇到的问题及解决方法
  15. Fire Net ZOJ - 1002
  16. JVM体系结构和工作方式
  17. 一个简单的ns2实验全过程
  18. 关于Android控件EditText的属性InputType的一些经验,java组合多个参数
  19. highchart 图标技术
  20. 网络攻防工具介绍——Metasploit

热门文章

  1. MyBatis数据持久化(十)与Spring4整合
  2. web产品浏览器兼容性问题你有考虑到吗?
  3. CDR中如何将对象在页面居中显示
  4. java文件名与class关系
  5. Django配置MariaDB数据库
  6. 2019-03-20 用SSIS把Excel中的数据导出来保存到SQLServer中
  7. Vue - vue.js 常用指令
  8. crm 系统项目(二) admin 后台操作表格
  9. mybatis-plus注解版实现多表联查(sql)
  10. ajax的两种使用方式