0

从 NSView 启动 IBAction 时,我收到此错误消息。

XXXX 是 AccountTableCellViewController 我确实给它加上了一个抽象名称,以防它可以帮助其他人。

这是组件的结构:

我有一个加载此视图的应用程序: 在此处输入图像描述

使用这个 NSView 作为单元格 在此处输入图像描述

TableView 的绑定方式如下:

@property (nonatomic,retain) IBOutlet NSTableView *tableView;

我显示的内容如下(我对没有在任何地方链接控制器有一些疑问)

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    Account *account = (Account *)[self.dataSource objectAtIndex:row];

    AccountTableCellViewController *controller = [[AccountTableCellViewController alloc] initWithNibName:@"AccountTableCellViewController" bundle:nil ];
    controller.account = account;
    return [controller view] ;
}

任何想法?

4

1 回答 1

1

这是您的代码的 pre-ARC 等价物

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    Account *account = (Account *)[self.dataSource objectAtIndex:row];

    AccountTableCellViewController *controller = [[AccountTableCellViewController alloc] initWithNibName:@"AccountTableCellViewController" bundle:nil ];
    controller.account = account;
    NSView *result = [[controller view] retain];
    [controller release]; /// !!!
    return [result autorelease];
}

tableView:viewForTableColumn:您的控制器在返回时已被释放。您在评论中说您已尝试将控制器保持在数组中,但这无济于事。请使用代码的相应部分更新您的问题,因为这里有问题。

于 2013-01-19T16:47:04.937 回答