导航控制器发布崩溃应用

Posted

技术标签:

【中文标题】导航控制器发布崩溃应用【英文标题】:Navigation controller release crash app 【发布时间】:2011-12-07 00:43:01 【问题描述】:

我在 navigationController 中的发布有问题。我有一个带点的地图视图。当我单击地图点时,我会创建带有详细信息的新 detailViewController。一切正常,但是当我按下返回按钮时,我的应用程序返回到 mapController,然后崩溃。如果我评论发布一切正常,但 mapController 没有发布。 这是我的代码:

FavoriteDetailViewController *detailViewController = [[FavoriteDetailViewController alloc]
initWithNibName:@"FavoriteDetailViewController" bundle:nil favoriteID:
[[(DisplayMapAnnotation*)view.annotation detailID] intValue] favoriteName:
[(DisplayMapAnnotation*)view.annotation title] favoriteCompany:
[(DisplayMapAnnotation*)view.annotation subtitle] favoriteLocation:
[(DisplayMapAnnotation*)view.annotation detailLocation] favoritehtmlString:nil
favoriteJobIndex:0 favoriteTotalJobs:1 favoriteGeoLat:detailArrayData.geoLat
favoriteGeoLng:detailArrayData.geoLng favoriteFullUrl:detailArrayData.fullUrl
favoriteExportUrl:detailArrayData.exportUrl favoriteIdent:1];

[self.navigationController pushViewController:detailViewController animated:YES];

[detailViewController release];

【问题讨论】:

我也遇到过这个问题。我通过不发布导航控制器来解决它。这不是最好的解决方案,但它对我有用。 【参考方案1】:

FavoriteDetailViewController 中的某些内容在释放时崩溃。仔细看dealloc方法。还要确保将 FavoriteViewController 设置和委托为 nil。

【讨论】:

我可以问下一个问题吗?也许很愚蠢,但我需要知道。何时在导航控制器中调用 dealloc 方法?这对我很重要,因为当我第一次打开 detailController 时,它会占用一些内存。当我按下返回按钮时,我会返回,但内存仍在使用。当我再次打开它时,它将使用下一部分内存。当我重复以下几次时,我会花费大量内存。在我看来,dealloc 方法永远不会被调用 我不知道为什么,但是当我这样做时:[self.navigationController pushViewController:detailViewController animated:YES];详细视图控制器 = 无; [detailViewController 发布];它工作正常......但我仍然有上述问题

以上是关于导航控制器发布崩溃应用的主要内容,如果未能解决你的问题,请参考以下文章

在执行功能时单击导航控制器上的后退按钮时应用程序崩溃

导航控制器在关闭视图控制器时崩溃

目标 C - 导航栏错误 + 崩溃怪异

将模态视图控制器解散回嵌入在 TabBarController 中的导航控制器堆栈导致崩溃

在接收推送通知时,点击事件应用程序在导航后崩溃

尝试在导航控制器中嵌入视图控制器时 Xcode6-Beta 崩溃