【发布时间】:2009-08-01 03:47:15
【问题描述】:
首先,自从我在阅读了一篇关于内存在 obj-C 中如何表现的文章后开始将“self”放置在任何地方以来,我从未在我的应用程序中看到如此多的内存问题。现在,我遇到了各种各样的问题(揭示了我编码的草率)。诚然我是 Objective-C 的新手,我承认我以前从未遇到过这么多内存管理问题。但我认为这需要练习才能习惯。
现在,我的问题。
我有一个类接口属性 (self.todoCreate),它包含对上述控制器的引用。按下按钮即可导航到此控制器。
@property (nonatomic, retain) TodoTaskCreateController *todoCreate;
下面的代码是导致导航视图变化的sn-ps:
TodoTaskCreateController *viewController = [[TodoTaskCreateController alloc]
initWithNibName:@"TodoTaskCreateController"
bundle:[NSBundle mainBundle]];
self.todoCreate = viewController;
[viewController release];
// slide-in todoCreate controller.
if (self.navigationController != nil && self.todoCreate != nil) {
[self.navigationController pushViewController:self.todoCreate animated:YES];
}
所以这是我的问题:
我第一次运行它就可以了。
进入第二个视图屏幕后,我导航回主视图。
如果我第二次尝试再次导航,则应用程序崩溃,就在 self.todoCreate 被分配 viewController 的位置。
请注意,在主视图的viewDidAppear 方法中,我调用[self.todoCreate release]。
谁能解释一下?
PS - 难怪有这么多 iPhone 应用程序随机崩溃。
【问题讨论】:
标签: objective-c memory-management uiviewcontroller