我知道在主方法中創建了一個autorelease池,並且接收autorelease消息的所有對象都存儲在此池中,並在池消耗完後釋放。爲什麼使用Autorelease池?
但總是說要避免自動釋放對象以避免內存泄漏,從而導致應用程序崩潰。
那麼爲什麼在什麼條件下我們應該使用autoreleasepool?
Apple文檔建議我們在使用線程時需要使用它們,因此在線程開始時我們需要創建一個自動釋放池,並在線程結束時將其耗盡,但如果我們不創建自動釋放對象在完整的線程中,那麼在這種情況下,也需要在線程的開頭創建一個autoreleasepool。
請清除我的困惑。 Thanx。
將創建一個沒有autorelease池的線程導致內存泄漏? –
是的,如果你在該線程上自動釋放一個對象,並且沒有游泳池,你將有泄漏。 –
那是有爭議的。 http://stackoverflow.com/questions/12575010/using-arc-is-it-fatal-not-to-have-an-autorelease-pool-for-every-thread –