概述 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