Objective-C对象的生命周期取决于其引用计数。
释放对象有两种方式:一种是调用release方法,使其保留计数立即递减;另一种是调用autorelease方法,将其加入“自动释放池中”。自动释放池用于存放哪些需要在稍后某个时刻释放的对象。清空自动释放池,系统会向其中的对象发送release消息。
一般情况下,无需担心自动释放池的创建问题。iOS应用程序运行在Cocoa Touch环境中。系统会自动创建一些线程,比如说主线程或GCD机制中的线程,这些线程默认都有自动释放池,每次执行“事件循环(event loop)”,就会将其清空。因此,不需要自己创建“自动释放池块”。通常只有一个地方需要创建自动释放池,那就是在main函数里。
@autoreleasepool语法还有个好处:每个自动释放池都有其范围,可以避免无意间误用了那些在清空池后已为系统所回收的对象。