以下哪个选项是正确的?
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:
委托方法的实现。
如果是这种情况,那么表视图对单元格做什么并不重要,因为单元格的所有权不是你的问题。您的责任是遵守方法签名所暗示的内存管理规则,在这种情况下,委托方法返回一个自动释放的对象,因为它不包含new
或copy
字样。因此,您需要返回一个自动释放的对象。在您的示例中,这是cell
实例。