iOS知识复习条记(6)--- 自动开释池AutoreleasePool

源码 2024-9-30 21:31:21 42 0 来自 中国
原理

autoreleasePool 是OC中的内存自动接纳机制,它可以延伸到场autoreleasepool中的变量release的机遇,正常情况下,创建的变量会在超出作用域的时间release,但是如果变量到场autoreleasepool,那么release将会延伸实行。
开释机遇

被autorelease修饰的对象,开释机遇有两种:

  • 如果通过代码添加一个autoreleasepool,在作用域竣事时,随着pool的开释,就会开释pool中的对象。这种情况是及时开释的,并不依赖于runloop。
  • 另一种就是体系自动举行开释,体系会在runloop开始的时间创建一个pool,进入休眠大概是退出的时间会对pool中的对象实行release利用。


具体时间如图:数据布局



autoreleasePoolPage是一个双向链表布局如下图:当实行objc_autoreleasePoolpush() 会压入哨兵对象,当对象发送autorelease 到时间会压入必要开释的对象。当实行objc_autoreleasePoolpop() 会从栈顶开始开释对象,直到碰到第一个哨兵对象。
autoreleasePool也是和线程逐一对应。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:27, Processed in 0.155266 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表