1.什么是自动释放池
自动释放池(autorelease pool)是一种内存自动回收机制。
当你向一个对象发送一个autorelease消息的时候,cocoa就将对象的一个引用放入到最新的自动释放池中(当前线程栈顶位置),他仍然是一个正当的对象,因此自动释放池定义的作用域内的其他对象都可以向他发送消息。
哨兵模式,只要调用autorelease方法,就会把该对象放到离自己最近的自动释放池中(栈顶的释放池)。在引用计数变成0的时候,runloop会把对象销毁。
release (不考虑其他情况),引用计数变成0,runloop会把对象销毁。