NSAutoreleasePool

来源:互联网 发布:淘宝大兴宠物怎么样 编辑:程序博客网 时间:2024/05/17 23:54
NSAutoreleasePool是什么?它实际上是个对象引用计数自动处理器。


首先,NSAutoreleasePool可以同时有多个,它的组织是个栈,总是存在一个栈顶pool,也就是当前pool,每创建一个pool,就往栈里压一个,改变当前pool为新建的pool,然后,每次给pool发送drain消息,就弹出栈顶的pool,改当前pool为栈里的下一个pool。


接下来要注意,对象,并不是自动被加入到当前pool中,而是需要对对象发送autorelease消息,这样,对象就被加到当前pool的管理里了。


当当前pool接受到drain消息时,它就简单的对它所管理的所有对象发送release消息。


到了这里,一定会发现这个所谓的pool有个坑人的特性,即,如果pool中被管理的对象接受到pool发送的那个release消息后,它的引用计数大于0,那么pool虽然消失了,但是那个对象还是存在的!

0 0
原创粉丝点击