Cocoa 子类NSTableView的委托是否未保留?

Cocoa 子类NSTableView的委托是否未保留?,cocoa,delegates,nstableview,weak-references,Cocoa,Delegates,Nstableview,Weak References,我有一个类ETXTableView,它是NSTableView的子类。(注释后更改)其委托在IB中设置为viewController(与其数据源一样) 该类有四个实例:四个表相互重叠。用户可以单击或鼠标从一个实例移动到另一个实例。moveDown:的代码如下: -(void)moveDown:(id)sender { NSLog(@"self=%ld, delegate=%ld",self,self.delegate); lastKeyDownOrUp = 1; if (

我有一个类
ETXTableView
,它是
NSTableView
的子类。(注释后更改)其委托在IB中设置为viewController(与其数据源一样)

该类有四个实例:四个表相互重叠。用户可以单击或鼠标从一个实例移动到另一个实例。
moveDown:
的代码如下:

-(void)moveDown:(id)sender
{
    NSLog(@"self=%ld, delegate=%ld",self,self.delegate);
    lastKeyDownOrUp = 1;
    if (viewController.sectionArrayController.canSelectNext)
    {
        NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:(viewController.sectionArrayController.selectionIndex+1)];
        [self selectRowIndexes:indexSet byExtendingSelection:NO];
    }
    else{
        [[self window] selectKeyViewFollowingView:self];
    }
    << Code to show a details panel >>;
}
-(void)下移:(id)发送方
{
NSLog(@“self=%ld,delegate=%ld”,self,self.delegate);
lastKeyDownOrUp=1;
如果(viewController.sectionArrayController.canSelectNext)
{
NSIndexSet*indexSet=[NSIndexSet indexSetWithIndex:(viewController.sectionArrayController.selectionIndex+1)];
[self-selectRowIndexes:indexSet byExtendingSelection:NO];
}
否则{
[[self window]选择KeyView以下视图:self];
}
>;
}
在此代码中,
self.delegate
的值为零。我几乎可以肯定这是因为该代表的引用较弱

  • 为什么要发布此引用?(如果需要更多信息,请告诉我)
  • 在这种情况下,我应该如何定义委托

  • 谢谢

    为什么它会成为自己的代表?通常这是另一个对象。你是对的,这只是一种看我是否能调用委托的方法。在您的评论之后,我改变了情况,这样就不再有
    setDelegate
    code了,我在IB中将委托设置为文件的所有者(即控制器)。仍然没有调用委托方法。我一定忘了什么。请确保委托对象也声明并符合NSTableViewDelegate协议。谢谢您的帮助。事实证明,控制器对象(比如tVC)是管理视图控制器(managingVC)的一个子类。管理VC是否应符合协议或tVC?这两个都不适合我,所以有别的地方不对劲。但我宁愿把这个放在一边:-)