cocoa - 我应该保留 makeViewWithIdentifier :owner:? 返回的 View 吗

标签 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... 方法返回一个自动释放的 View ,并且当 TableView 仍然存在时, TableView 单元格无法释放。 TableView 是否保留单元格本身?

非常感谢!

最佳答案

由于您没有指定,我假设此代码来自您对 NSTableView-tableView:viewForTableColumn:row: 委托(delegate)方法的实现。

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

关于cocoa - 我应该保留 makeViewWithIdentifier :owner:? 返回的 View 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046750/

相关文章:

objective-c - UIImage,有没有一种简单的方法可以使其变暗或全黑

objective-c - 无法运行首选项 Pane 应用程序

objective-c - 如何将指针的地址传递给线程而不首先超出范围?

cocoa - 以编程方式将 NSTableView 添加到 NSView

objective-c - 如何将 JPG 文件加载到 NSBitmapImageRep?

swift - NSTableview 在 Swift 中以编程方式将 SelectionHighlightStyle 设置为 NSTableViewSelectionHighlightStyleNone

cocoa - 我如何在 NSTableView 中的 NSTextFieldCell 前面显示 NSImage

macos - NSImage 在拖动操作之间为 'retained'

cocoa - 绑定(bind)到 NSTextField 单元格不起作用,编辑值重置为默认值

cocoa - 在特定的 NSTableview 单元格中绘制对角线