autoreleasepool 以一個棧的形式實現,主要經過下列三個函數完成.
objc_autoreleasepoolPush
objc_autoreleasepoolPop
objc_autorelease
複製代碼
看函數名就能夠知道,對 autorelease 分別執行 push,和 pop 操做。銷燬對象時執行release操做。
舉例說明:咱們都知道用類方法建立的對象都是 Autorelease 的,那麼一旦 Person 出了做用域,當在 Person 的 dealloc 方法中打上斷點,咱們就能夠看到這樣的調用堆棧信息: