在基於標籤欄的應用程序中,如果我從一個選項卡中將一個控制器推入導航堆棧中,然後當另一個選項卡處於活動狀態時,我嘗試彈出該控制器,除非在沒有動畫的情況下彈出該控制器,否則它不會被釋放。UIKit不釋放控制器,如果它沒有被動畫刪除?
這工作:
[navigationController popToRootViewControllerAnimated:NO];
這並不:
[navigationController popToRootViewControllerAnimated:YES];
沒有人有這裏發生了什麼的任何想法? animated
參數使用不當嗎?
UPDATE:
蘋果告訴我,這確實是UIKit中的錯誤,他們將其標記爲緊急,並指派某人吧。它可能已在最新版本中得到解決,但我沒有時間檢查。
聽起來像是UIKit中的錯誤。如果您可以通過簡單的項目進行確認,請將其提交給Apple。 – 2010-07-16 12:42:22
我剛剛創建了一個示例項目來確認它,我可以這麼做。當然,這不是每次使用UINavigationController都會發生的事情。如果在一個選項卡內有一個帶有導航控制器的UITabBarController,並且從另一個選項卡彈出導航控制器,則會發生這種情況。我注意到,如果堆棧中有多個視圖控制器,除最後一個之外,它們都會被釋放,直到您選擇返回另一個選項卡(帶有導航控制器的那個)時纔會保留。 – eugeniodepalo 2010-07-16 14:30:19
如果用「last」控制器表示根控制器,那麼這是相關的:「如果堆棧頂部的視圖控制器是根視圖控制器,這個方法什麼都不做......你不能彈出最後一個項目堆棧「。 (來自'popViewControllerAnimated:'的文檔)。你很少必須擔心UIKit何時發佈對象。只要確保你做了你的內存管理的一部分。誰知道,也許框架會保留一個對象來回收它?或者可能不是。關鍵是,你可以依靠它們進行充分測試。 – Felixyz 2010-07-17 00:58:01