以下哪项是正确的?
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…
方法返回自动释放的视图,并且在表视图仍然存在时无法释放表视图单元格。表视图是否保留单元格本身?
非常感谢你!
答案 0 :(得分:3)
由于您未指定,我认为此代码来自‑tableView:viewForTableColumn:row:
NSTableView
委托方法的实现。
如果是这种情况,那么表格视图对单元格的作用并不重要,因为单元格的所有权不是您的问题。您的责任是遵守方法签名所暗示的内存管理规则,在这种情况下,委托方法返回一个自动释放的对象,因为它不包含单词new
或copy
。因此,您需要返回一个自动释放的对象。在您的情况下,那是cell
实例。