Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 线程1 exc\U错误访问(代码=2)。。。帮助我_Ios_Objective C - Fatal编程技术网

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];
}
直接设置实例变量,或者让编译器处理它。类扩展中的属性将自动合成