[英]Thread1 exc_bad_access (code =2)… help me
我已经解决了几天这个问题。 但似乎无法得到..帮助我..
让我解释一下我的情况。 基本上,我有包含表视图控制器和视图控制器的导航控制器。 而且我正在制作简单的电话簿应用程序。
而且,我在扩展类中声明了一个目录条目
@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中调用我的setter。 它说EXC_BAD_ACCESS
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
self.dirEntry = dirEntry;
}
先感谢您..
它不是EXC_BAD_ACCESS,而是OS杀死您的应用以破坏堆栈而已。 此方法无限递归:
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
self.dirEntry = dirEntry;
}
您对点表示法的使用将扩展为设置器,这应该使它更加清楚。
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
[self setDirEntry:dirEntry];
}
直接设置实例变量,或让编译器处理它。 类扩展中的属性是自动合成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.