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

これは、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 に答える