下列哪项是正确的?
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...
方法返回一个自动释放的 View ,并且当 TableView 仍然存在时, TableView 单元格无法释放。 TableView 是否保留单元格本身?
非常感谢!
最佳答案
由于您没有指定,我假设此代码来自您对 NSTableView
的 -tableView:viewForTableColumn:row:
委托(delegate)方法的实现。
如果是这种情况,那么 TableView 对单元格做什么并不重要,因为单元格的所有权不是您的问题。您的责任是遵守方法签名所暗示的内存管理规则,在这种情况下,委托(delegate)方法返回一个自动释放的对象,因为它不包含单词 new
或 copy
。因此,您需要返回一个自动释放的对象。在您的例子中,这就是 cell
实例。
关于cocoa - 我应该保留 makeViewWithIdentifier :owner:? 返回的 View 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046750/