Ios 线程1 exc\U错误访问(代码=2)。。。帮助我
我已经解决这个问题好几天了。但我似乎无法得到它。。 帮帮我 让我解释一下我的情况。基本上,我有导航控制器,它包含表视图控制器和视图控制器。我正在制作一个简单的电话簿应用程序 而且,我在扩展类中声明了一个目录项Ios 线程1 exc\U错误访问(代码=2)。。。帮助我,ios,objective-c,Ios,Objective C,我已经解决这个问题好几天了。但我似乎无法得到它。。 帮帮我 让我解释一下我的情况。基本上,我有导航控制器,它包含表视图控制器和视图控制器。我正在制作一个简单的电话簿应用程序 而且,我在扩展类中声明了一个目录项 @interface DetailViewController () @property DirectoryEntry *dirEntry; @end 并且,在表视图中,当您单击按钮时,它将通过segue - (void)prepareForSegue:(UIStoryboardSe
@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\u访问不良
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
self.dirEntry = dirEntry;
}
提前感谢您。这不是一个EXC\u BAD\u访问,而是操作系统因为破坏堆栈而杀死了您的应用程序。此方法无限递归:
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
self.dirEntry = dirEntry;
}
您对点表示法的使用扩展到setter,这将使这一点更加清楚
-(void) setDirEntry:(DirectoryEntry *) dirEntry {
[self setDirEntry:dirEntry];
}
直接设置实例变量,或者让编译器处理它。类扩展中的属性将自动合成