我正在使用UINavigationController在視圖之間移動。當我在視圖中來回移動時,我的應用使用的內存不斷增加。在把NSLog語句放在所有viewcontrollers的dealloc方法中,我注意到它只被調用了一些viewcontrollers,而不是所有被彈出的。iPhone - 何時dealloc爲一個視圖控制器調用?
例如,這是其中的觀點被推序列MainViewController - > viewcontroller1 - > viewcontroller2 - > viewcontroller3
現在viewcontroller3,如果我做了popToViewController:mainController,dealloc中被稱爲僅供viewcontroller3。它不叫viewcontroller1和2.
有人可以告訴我爲什麼發生這種情況。
發現問題。如果視圖控制器持有的任何引用仍在內存中,則不會調用dealloc方法。在我的情況下,它是沒有在viewcontroller1和viewcontroller2中發佈的MPMoviePlayerController對象。
我遇到完全相同的問題;僅對第三個控制器調用dealloc。你說過:「如果視圖控制器持有的任何引用仍在內存中,dealloc方法不會被調用。」你能詳細解釋一下嗎? – 2011-06-10 02:40:56
視圖控制器是仍在使用的對象的委託。我從代表中刪除它,然後它工作正常。自從另一個對象持有其參考文件(作爲代表) – lostInTransit 2011-06-10 04:07:28