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];
}
直接设置实例变量,或让编译器处理它。类扩展中的属性会自动合成。
omg ..感谢上帝..非常感谢你 –
...它不工作先生... –
什么,特别是不起作用? – CodaFi