我应该保留makeViewWithIdentifier返回的视图:owner:?

时间:2011-08-12 21:55:25

标签: cocoa nstableview nstableviewcell

以下哪项是正确的?

NSTableCellView *cell = [outlineView makeViewWithIdentifier: [tableColumn identifier] owner: self];
// Do stuff…
return cell;

NSTableCellView *cell = [[outlineView makeViewWithIdentifier: [tableColumn identifier] owner: self] retain];
// Do stuff…
return cell;

我很困惑,因为makeView…方法返回自动释放的视图,并且在表视图仍然存在时无法释放表视图单元格。表视图是否保留单元格本身?

非常感谢你!

1 个答案:

答案 0 :(得分:3)

由于您未指定,我认为此代码来自‑tableView:viewForTableColumn:row: NSTableView委托方法的实现。

如果是这种情况,那么表格视图对单元格的作用并不重要,因为单元格的所有权不是您的问题。您的责任是遵守方法签名所暗示的内存管理规则,在这种情况下,委托方法返回一个自动释放的对象,因为它不包含单词newcopy。因此,您需要返回一个自动释放的对象。在您的情况下,那是cell实例。