Thread1 exc_bad_access(code = 2)...帮我

问题描述:

我一直在解决这个问题几天。但似乎无法得到它.. 帮助我..Thread1 exc_bad_access(code = 2)...帮我

让我解释我的情况。基本上,我有导航控制器其中包含表视图控制器和查看控制器。我正在制作简单的电话簿应用程序。

而且,我有一个目录条目扩展类中声明

@interface DetailViewController() 

@property DirectoryEntry *dirEntry; 

@end 

而且,在表视图,当您单击按钮,它会通过赛格瑞

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    DetailViewController *detailCV = [segue destinationViewController]; 

    if ([segue.identifier isEqualToString:@"cellToDetail"]) { 

     [detailCV setDirEntry: [self.pbArray objectAtIndex:[self.tableView  indexPathForSelectedRow].row]]; 

    } else { 

     detailCV.dirEntry = nil; 

    } 

    //designate delegate !!! 
    detailCV.delegate = self; 

} 
传递一些数据

我的问题在执行时发生detailCV.dirEntry = nil;它会在viewController中调用我的setter。它说EXC_BAD_ACCESS

-(void) setDirEntry:(DirectoryEntry *) dirEntry { 
    self.dirEntry = dirEntry; 
} 

预先感谢您..

这不是一个EXC_BAD_ACCESS这么多的OS杀死你的应用程序用于粉碎的堆栈。这种方法是无限递归的:

-(void) setDirEntry:(DirectoryEntry *) dirEntry { 
    self.dirEntry = dirEntry; 
} 

您使用点符号扩展到一个setter,这应该使这更清楚。

-(void) setDirEntry:(DirectoryEntry *) dirEntry { 
    [self setDirEntry:dirEntry]; 
} 

直接设置实例变量,或让编译器处理它。类扩展中的属性会自动合成。

+0

omg ..感谢上帝..非常感谢你 –

+0

...它不工作先生... –

+0

什么,特别是不起作用? – CodaFi