簡體   English   中英

當呈現為模態視圖控制器時,ARC UINavigationController堆棧未被釋放

[英]ARC UINavigationController stack not getting deallocated when presented as modal view controller

第一:我將我的應用程序移植到ARC,一切似乎都有效。 但是現在我發現了一個問題:我有一個UINavigationController,它在模塊上呈現了一些UIViewControllers。 但是當我關閉模態視圖控制器時,堆棧中的視圖控制器似乎沒有被釋放。 這是我做的:

UIViewController* root = [[UIViewController alloc] init];
UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:root];
[self presentModalViewController:navi animated:TRUE];

然后從根目錄推出更多視圖控制器,但這並不重要。 事實是我后來打電話

[self dismissModalViewControllerAnimated:TRUE];

root不會被釋放。 當然在我的代碼中,root是UIViewController的子類,我跟蹤dealloc和viewDidUnload,但沒有任何東西被調用。

有任何想法嗎?

你的導航控制器里面有什么? 可能是其他東西(可能是導航控制器中的視圖控制器)是罪魁禍首,這導致鏈條意味着導航控制器不會被釋放。

無論哪種方式,您發布的代碼都是正確的,因此如果您的導航控制器在調用dismissModalViewController后沒有被釋放, dismissModalViewController它會建議其他東西仍然有一個對它或其依賴項的活動引用。 我知道這不回答你的問題,但你可能不得不四處尋找。

由於您沒有顯示實際代碼,因此很難判斷根視圖控制器發生了什么。

但是,使用ARC,如果你有一個指向對象的強指針,它就不會被釋放。 我懷疑你在將它添加到導航控制器后仍然堅持使用此控制器。

但是,如果沒有看到您的代碼,我無法分辨。

暫無
暫無

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

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