Ios 单击自定义UITableViewCell上的按钮将抛出EXC\u BAD\u访问

Ios 单击自定义UITableViewCell上的按钮将抛出EXC\u BAD\u访问,ios,objective-c,uitableview,exc-bad-access,Ios,Objective C,Uitableview,Exc Bad Access,我有一个自定义UITableViewCell(ReservationsCell.h/ReservationsCell.m/ReservationsCell.xib),其中有一个按钮。在NIB文件中,标识符设置为reservationsCell,文件所有者设置为视图控制器,自定义类设置为reservationsCell。中按钮的TouchUpInside事件链接到写入ViewController文件的iAction 问题 当我单击该按钮时,我得到一个EXC_BAD_ACCESS-[NSObject

我有一个自定义UITableViewCell(ReservationsCell.h/ReservationsCell.m/ReservationsCell.xib),其中有一个按钮。在NIB文件中,标识符设置为
reservationsCell
,文件所有者设置为视图控制器,自定义类设置为
reservationsCell
。中按钮的TouchUpInside事件链接到写入ViewController文件的iAction

问题

当我单击该按钮时,我得到一个EXC_BAD_ACCESS
-[NSObject performSelector:withObject:withObject::]:消息发送到解除分配的实例0x398e7ff0

尝试

在过去的几个小时里,我学会了尝试NSZombies,这告诉我错误是由我的
tableView:cellforrowatinexpath
方法引起的

代码

ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    .....    

    // register ReservationCell nib
    [self.reservationsTableView registerNib:[UINib nibWithNibName:@"ReservationsCell" bundle:nil] forCellReuseIdentifier:@"reservationsCell"];   
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"reservationsCell";
    ReservationsCell *cell = (ReservationsCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    ......
}
根据Zombies的说法,抛出错误的特定行似乎是
dequeueReusableCellWithIdentifier


请帮帮我。提前感谢!:)

不要在自定义的
UITableViewCell
nib中设置文件所有者-这会导致奇怪的问题,其中包括您看到的这个错误。为单元格本身设置自定义类,将UI输出连接起来,并让自定义
UITableViewCell
类中的代码执行工作(或将工作委托给其所属的
UITableView

您应该做的是处理
UITableViewCell
本身中的
iAction
s(
ReservationsCell
)。这些触摸事件应该转发到通过委托协调事情的
UIViewController
(如果您需要单元格索引,也可以传递它)


祝你好运

我对目标C很陌生,你能给我指一个关于授权的教程吗?这可能是相关的:发布你的didSelectRowAtIndexPath代码@不幸的是,我甚至没有实现这个方法。