不保留子类NSTableView的代理?

时间:2013-09-13 13:16:07

标签: 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 (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 >>;
}

此代码中self.delegate的值为 nil 。我几乎可以肯定这是因为委托有一个弱引用。

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

0 个答案:

没有答案