【发布时间】:2011-09-08 00:35:00
【问题描述】:
我总是像这样将新的视图控制器推送到堆栈上:
MyViewController *vc = [[MyViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];
当它从堆栈中弹出时,一切都很好:
[self.navigationController popViewControllerAnimated:NO];
但是现在当我将 vc 从堆栈中弹出时,我在 main.m 中遇到了崩溃,说明在 line:int retVal = UIApplicationMain(argc, argv, nil, nil);
处访问不正确
但是现在如果我注释掉 [vc release] 就不会再崩溃了?
但是为什么而且肯定会泄漏内存,因为我没有释放我创建的东西?
【问题讨论】:
-
您是否尝试在调试模式下运行它?找出它崩溃的确切行。也许这与发布根本无关,因为您发布的代码似乎是正确的
-
从您的控制台发布详细消息,如果您不介意,MyViewController 的代码可能会有所帮助。
-
请发布回溯。崩溃不在那条线上;它在汇编程序的某些行中,大约 20 个堆栈帧进一步向下。您发布的代码很好,所以您在其他地方做错了对视图控制器的引用计数或它递减的对象之一不合适的事情,很可能是在
-dealloc或-viewDidUnload期间递减的对象之一。回溯应该准确地告诉您您做错了什么类型的对象。
标签: iphone uiviewcontroller uinavigationcontroller release exc-bad-access