单击后面的应用程序崩溃

时间:2011-03-04 09:54:15

标签: iphone

当我在点击行上导航时,我推动了poinofinterestview但是当我点击后面的app崩溃时。 但如果我发表评论[nextControllerp发布];它工作或5或6次然后它崩溃

(void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

[TableView deselectRowAtIndexPath:indexPath animated:YES];

PointOfInterest *nextControllerp=[[PointOfInterest alloc] initWithNibName:@"PointOfInterest" bundle:nil]; 
        if([LocationList count]!=0 && [LocationListId count]!=0) 
        { 
          nextControllerp.locName=[LocationList objectAtIndex:indexPath.row]; 
          nextControllerp.LocationId=[LocationListId objectAtIndex:indexPath.row]; 
          [self.navigationController pushViewController:nextControllerp animated:YES];
       } 
[nextControllerp release];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 
self.navigationItem.backBarButtonItem=backButton;

 [backButton release];
}

1 个答案:

答案 0 :(得分:1)

我注意到的一件事 - 您的代码有时会创建一个PointOfInterest对象,然后在不对其进行任何操作的情况下释放它。将创建/发布移动到if块。

除此之外,您正在使用正确的习惯用法将新控制器推送到导航控制器 - 即启动控制器,将其推送到导航控制器,然后立即调用释放。

我相信您的崩溃是由您发布的代码中未显示的内容引起的。注释掉release行导致它崩溃的事实可能表明某些代码在某个地方仍然试图在从导航堆栈中被解除之后访问新的viewcontroller(因为通常在解雇时它会是释放和dealloc'd)。

出于好奇,删除设置后退按钮项的代码是否会以任何方式影响崩溃?试着评论最后三行。