簡體   English   中英

當調用navigationController popViewControllerAnimated時,不會調用viewController的dealloc

[英]viewController's dealloc don't be called when called navigationController popViewControllerAnimated

我有一個MyViewController,它基於UIViewController,我使用它像下面的代碼:

MyViewController *nextViewController = [[MyViewController alloc] init]; [self.navigationController pushViewController:nextViewController animated:YES]; [nextViewController release];

在具有用戶事件的MyViewController中,具有以下代碼:

[self.navigationController popViewControllerAnimated:YES];

現在,我發現,MyViewController的dealloc不會被調用,但是,當我將App切換到后台時,例如,傳遞home按鈕,dealloc方法已被調用! 這個大問題! 當用戶轉到MyViewController並且一次又一次地返回時,會有很多MyViewController不會被釋放,而且只有當App轉到后台時才會釋放大量內存。

所以,有人可以幫我解決這個問題,謝謝!

顯而易見的原因是某些東西保留了你的viewController。 您必須仔細查看您的代碼。 您是否在您的班級中執行任何使用委托的事情,因為他們有時會保留委托。 NSURLConnection將保留您的課程,NSTimer也是如此。 您可以在您的類中分散代碼並記錄您的類的保留計數,並嘗試找出其中的位置。 在你到目前為止顯示的代碼中,retain可能只是1,因為類只由導航控制器保留。

此外,在彈出視圖之前,獲取對它的引用,使用NO動畫彈出它,然后向它發送一些報告保留計數的消息(這將是您編寫的一些新方法)。 這種新方法還可以記錄其他內容,例如是否有任何計時器,NSURLConnections等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM