Iphone 当我单击自定义UITableViewCell内的按钮时,执行错误访问

Iphone 当我单击自定义UITableViewCell内的按钮时,执行错误访问,iphone,objective-c,uitableview,exc-bad-access,Iphone,Objective C,Uitableview,Exc Bad Access,我用自定义TableViewCell构建了一个TableView,第一个自定义单元格有一个工具栏和一些工具栏按钮项,还有一个用于测试的简单按钮。 问题是:当我点击任何条形按钮项目或简单按钮时,我有一个EXC\u BAD\u访问权限 这是我构建tableview单元格的代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

我用自定义TableViewCell构建了一个TableView,第一个自定义单元格有一个工具栏和一些工具栏按钮项,还有一个用于测试的简单按钮。 问题是:当我点击任何条形按钮项目或简单按钮时,我有一个EXC\u BAD\u访问权限

这是我构建tableview单元格的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier = @"taskCell";

    if(indexPath.row != 0){

        TaskCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"TaskCell" owner:nil options:nil];

            for (UIView *view in views) {
                if([view isKindOfClass:[UITableViewCell class]])
                {
                    cell = (TaskCell*)view;
                }
            }
        }
        return cell;
    }
    else{

        if (travelInfoCell == nil) {

            NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"TravelInfo" owner:nil options:nil];

            for (UIView *view in views) {
                if([view isKindOfClass:[UITableViewCell class]])
                {
                    travelInfoCell = (TravelInfo*)view;
                }
            }
        }

        travelInfoCell.selectionStyle = UITableViewCellSelectionStyleNone;

        return travelInfoCell;
    }

}
我计划将操作代码委托给TableViewController,但目前我甚至无法点击按钮iAction前面的断点

将代码写入TravelInfo.m,但该代码不起作用,并向我抛出EXC\u BAD\u访问权限:

- (IBAction)doAccepted:(id)sender {
    NSLog(@"accepted");
    //[delegate travelAccepted];
}
你有什么解决办法吗?

这是你的问题:

travelInfoCell = (TravelInfo*)view;
您没有保留对视图的引用,因此视图变量的预期寿命是有限的。你需要保留一份推荐信。这样做:

travelInfoCell = [(TravelInfo*)view retain];

不要忘记在ViewDiUnload上释放单元格并将其置零

正如nob1984所说,您可以在ViewDiUnload方法中保留视图并将其释放,也可以分配内存空间,以便在需要释放指针之前不释放指针。所有EXC_BAD_访问意味着您正在访问一个对象已终止的指针。您好,谢谢。我和你一样添加了保留,但a我仍然有同样的问题。仅供参考:我无法在cell自定义类中设置自定义单元格nib文件的出口,当tableview调用:-(UITableViewCell*)tableview:(UITableView*)tableview cellForRowAtIndexPath:(NSIndexPath*)indexPath:**由于未捕获的异常“NSUnknownKeyException”终止应用程序,原因:'[setValue:forUndefinedKey:]:该类不符合密钥btnReject的键值编码。我很难解析您试图说的内容。TravelInfo是通过同名nib加载的自定义单元格。您看到的异常向我表明,在该nib中,您试图在“文件所有者”上设置出口,但您可以在代码中看到所有者为“nil”.在nib中的表视图单元格中设置您试图设置的任何出口,而不是文件所有者。请原谅我的错误解释。因此,我意识到,在文件所有者为零之前,我无法在TravelInfo类中设置出口。但是,我应该如何在代码中分配所有者?TravelInfo不需要所有者。在TravelInfo xib中,只需设置输出到实际的UITableView单元格,并删除文件所有者上设置的所有输出。