我们知道,release的作用是使对象引用计数-1。autorelease是系统自动在恰当的时候向对象发送一条release消息。
而autoreleasepool是在autorelease的基础上将autorelease对象放入一个pool中,系统会在一个恰当的时候销毁pool,并向pool中的对象发送一条release。
值得注意的是,autoreleasepool销毁的时候并不会保证pool内的对象完全被销毁,它只会向所有的对象发送一次release消息,至于对象挂没挂,它并不在意。因此,当autoreleasepool内对象的引用计数超过1以上的时候,会造成内存泄漏。
本文详细解释了autorelease与autoreleasepool的工作原理及使用方式。autorelease用于自动发送release消息减少引用计数,而autoreleasepool则进一步管理autorelease对象,直到合适的时机销毁并释放资源。值得注意的是,如果autoreleasepool中的对象引用计数大于1,则可能导致内存泄漏。
4876

被折叠的 条评论
为什么被折叠?



