请看看我的代码下面。这部分从堆栈中弹出顶视图控制器(通常是相同的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