2013-07-08 18 views

回答

6

您可以使用樂器中的Allocations樂器來了解什麼時候某個類(任何類)被釋放。這是更好的方式。但是,仍然可以在ARC下覆蓋dealloc並記錄消息。不同的是,當你重寫dealloc時,你不能調用[super dealloc](編譯器會爲你處理)。

如果您發送消息給解除分配的實例造成問題,請在樂器中使用殭屍樂器。它會告訴你何時發送了一個釋放對象的消息,允許你看到有問題的調用堆棧以及消息對象的分配/保留/釋放/釋放歷史記錄。

在ARC下,您不應該考慮確切的對象生命週期以及所有權語義。也就是說,當你在ARC下設置一個強變量爲零時,被引用的對象被釋放。是否解除分配(即「從存儲器中刪除本身」)取決於其他對象是否有強烈的引用。另外,如果它位於任何autorelease池中,它將不會被釋放,直到池消失(在ARC和MRC下都爲真)。同樣,使用分配工具可以發現任何特定情況下發生的細節。