請看看我的代碼下面。這部分從堆棧中彈出頂視圖控制器(通常是相同的ArticleControllerController
)(無論是否彈出單個控制器或彈出到根控制器,我發現問題都保持不變),創建新控制器並添加到堆棧。UIViewController保留問題:計數從未達到零
問題是,它的保留計數永遠不會爲零,所以方法ArticleControllerController
永遠不會被稱爲留下大量的各種接口對象未發佈。由於內存不足,最終應用程序崩潰(至少在設備中,至少我認爲這部分是主要問題)。
- (void) navigateToNewsCategoryByIndex:(int)idx {
[app.nav popViewControllerAnimated:NO]; // could be popToRootController
ArticleControllerController *ac = [[ArticleControllerController alloc] init];
ac.categoryIndex = idx;
[app.nav pushViewController:ac animated:NO];
[ac release];
NSLog(@"AC retain count: %d", [ac retainCount]); // prints 2
}
所以,我猜,popViewControllerAnimated只會釋放其餘兩個保留中的一個。爲什麼?我應該尋找什麼?我能做什麼?撥打[ac release]
兩次(那將是可怕的事情)?
檢查您的控制器是否被某個其他類保留 - 可能是代表某事。 – Vladimir 2010-10-11 11:31:00
對不起吃午飯,但你似乎已經修好了:) – willcodejavaforfood 2010-10-11 11:45:47
是的,那完全是我的錯誤。天哪,我現在感覺超級笨拙,因爲我花費了令人難以置信的時間尋找這個問題的根源。 – sniurkst 2010-10-11 11:48:00