Thread1 exc_bad_access (code =2)...帮帮我
Posted
技术标签:
【中文标题】Thread1 exc_bad_access (code =2)...帮帮我【英文标题】:Thread1 exc_bad_access (code =2)... help me 【发布时间】:2014-03-30 08:17:35 【问题描述】:这几天我一直在解决这个问题。但似乎无法得到它.. 帮帮我..
让我解释一下我的情况。基本上,我有 navigation controller 包含 table view 控制器和 view 控制器。我正在制作简单的电话簿应用程序。
而且,我在扩展类中声明了一个目录条目
@interface DetailViewController ()
@property DirectoryEntry *dirEntry;
@end
并且,在表格视图中,当您单击按钮时,它将通过 segue
传输一些数据- (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 中调用我的设置器。它说 EXC_BAD_ACCESS
-(void) setDirEntry:(DirectoryEntry *) dirEntry
self.dirEntry = dirEntry;
提前谢谢你..
【问题讨论】:
【参考方案1】:这与其说是一个 EXC_BAD_ACCESS,不如说是操作系统因为破坏堆栈而杀死了你的应用程序。这个方法是无限递归的:
-(void) setDirEntry:(DirectoryEntry *) dirEntry
self.dirEntry = dirEntry;
您对点表示法的使用扩展到了一个 setter,这应该会更清楚。
-(void) setDirEntry:(DirectoryEntry *) dirEntry
[self setDirEntry:dirEntry];
直接设置实例变量,或者让编译器处理。类扩展中的属性是自动合成的。
【讨论】:
以上是关于Thread1 exc_bad_access (code =2)...帮帮我的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 在 Swift 中抛出 Thread1: EXC_BAD_ACCESS (code=1, address 0x...)
EZAudio 不起作用:创建 EZRecorder 实例时的 Thread1 EXC_BAD_ACCESS
Thread 1: EXC_BAD_ACCESS(当结构体遇上指针)
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)错误