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



以下哪个选项是正确的?

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…方法返回一个自动释放视图和表视图单元格不能被释放,而表视图仍然在那里。表视图是否保留单元格本身?

非常感谢!

由于您没有指定,我假设这段代码来自您对NSTableView‑tableView:viewForTableColumn:row:委托方法的实现。

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

最新更新