2010-11-03 77 views
0

我有一個iPad應用程序,具有導航控制器的線性導航。我一次一個手勢地按View Controller。我也有一個PopOverController菜單,可以推視圖控制器。麻煩的是,當我推送超過20個時,它會崩潰。導航控制器 - 應用程序崩潰後推20視圖

當我超過某個數字後,是否必須從堆棧中手動刪除視圖控制器?我的印象是導航控制器會自動刪除隱藏的視圖控制器。

非常感謝提前。

+0

在你的實現某處會出現其他問題,你沒有釋放足夠的對象和使用內存,或者你正在做其他事情導致問題。它根本不是導航控制器。你可能會走出一個陣列或類似的東西。 你在控制檯中得到什麼錯誤信息? – 2010-11-03 17:09:33

+0

我得到的錯誤是:2010-11-03 12:02:27.810 EliteDemo [504:207]收到內存警告。 Level = 1 此外,DidReceiveMemoryWarning突然在所有當前ViewController中調用。 – intomo 2010-11-03 19:04:41

+1

您應該在所有視圖控制器中響應這些警告並釋放盡可能多的內存。 – Rengers 2010-11-03 19:13:45

回答

1

如果您分配的內存過多,請使用viewDidUnload釋放對象,在視圖不再顯示時不會使用該對象。您也可以在viewDidLoad中恢復。

+0

因此,基本上我在dealloc中釋放的所有對象都是在viewDidUnload中釋放的? – intomo 2010-11-03 20:00:19

+0

我做了這件事,並停止了崩潰。 – intomo 2010-11-04 01:10:05

0

嘗試釋放所有控制器,然後將它們推入堆棧並嘗試釋放導航控制器。希望這會有所幫助

+0

謝謝。我已經釋放了控制器。所以你建議以下? – intomo 2010-11-04 19:00:46

+0

SlidesViewController * svController = [[SlidesViewController alloc] initWithNibName:@「SlidesView」bundle:[NSBundle mainBundle]]; \t \t \t \t [svController setCurrentLevel:[self currentLevel] + 1]; \t \t [[self model] setSlideNum:[self currentLevel] + 1]; \t \t [svController setRole:[self role]]; \t \t [[self navigationController] pushViewController:svController animated:YES]; \t \t \t \t [svController release],svController = nil; \t \t [[self navigationController] release]; – intomo 2010-11-04 19:01:03

+0

[[self navigationController] release];使它發瘋。 – intomo 2010-11-04 19:07:21