概述 html
autorelease 是NSObject的一个类方法,它是经过调用[NSAutoreleasePool addObject:self] 来把一个对象添加到自动释放池中的,由于这是一个类方法,因此有必要知道是对哪一个对象进行autorelease调用。 数组
NSAutoreleasePool 实例是保存在每个线程的stack中。当一个新pool建立,它就会进栈。当一个stack被销毁的时候,它就出栈。 使用NSAutoreleasePool类方法时,须要从当前线程中获取stack最上面的pool对象,来获取当前pool。 并发
当找到正确的pool后,调用addObject: 实例方法来将对象添加到pool中。当对象被添加到pool中,其实他是添加到pool中的一个可变数组中去。 ui
当pool被销毁时,pool会遍历可变数组中的全部对象,并发送 release 方法给每个对象。还有一点额外说明,若是一个pool被销毁,而且这个pool不是stack最上端的,这个pool还会销毁该pool之上的全部pool。 spa
总结 线程
原文连接:http://www.mikeash.com/pyblog/friday-qa-2911-09-02-lets-build-nsautoreleasepool.html htm