使用INIT,PUSTVIEWCONTROLLER时,奇怪的exc不良访问。此代码有什么问题吗?
-
02-10-2019 - |
题
也许我一直在研究这个时间太长;)我的应用程序有一个导航控制器和几个ViewControllers。从rootviewController加载的ViewController之一(MainViewController)中,我有以下代码。 PushViewController到DataviewController和Back(例如,按下),应用程序崩溃了。
DataviewController加载正常,但是当敲击导航controller的后背按钮时,应用程序会崩溃,而对象异常。如果我删除:
[dataViewController release];
该应用程序正常。这很奇怪,因为DataviewController以相同的方法启动。有任何想法吗?
- (void) locationPage
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotifyRemoveMap" object:nil];
MyAppDelegate *app = [[UIApplication sharedApplication] delegate];
UINavigationController *navigation = app.navigationCantroller;
[navigation popToRootViewControllerAnimated:NO];
DataViewController *dataViewController = [[DataViewController alloc] initWithNibName:@"DataView" bundle:nil];
[dataViewController setCategoryId:category];
MyLanguage *lang = app.lang;
Mylocation *location = [lang locationForCategoryId:category];
dataViewController.title = location.name;
NSArray *locationArray = [lang locations];
dataViewController.locations = locationArray;
[navigation pushViewController:dataViewController animated:YES];
[dataViewController release]; // With this removed, app doesn't crash
}
解决方案
甚至还没有阅读您的帖子。如果是exec-bad-access,我有2个单词给您:
启用nszombies。
请遵循此链接:(它说明了您需要知道的一切来解决任何不良访问问题)
干杯!
其他提示
当DataviewController弹出并且您尝试访问它的某些内容时,可能会出现问题 - 然后已经发布。您可以检查控制台以获取更多详细信息 - 更好,以调试模式运行(调试配置 和 与调试器一起运行)。
您可以编辑您的问题以显示带有返回按钮的一些代码。
你谈论发布 dataViewController
但是您的代码说 detailsViewController
. 。您是否错误地复制并粘贴了,还是错误?
您应该考虑不使用 app.navigationController
但 self.navigationController
. 。清洁器设计。对应用程序委托的依赖性较小,该代表人经常被用作弗兰肯斯坦(Frankensteinob),知道太多了。
不隶属于 StackOverflow