是-tableView:objectValueForTableColumn:row:必须?

use*_*855 7 cocoa objective-c nstableview

NSTableViewDataSource中,概述说这tableView:objectValueForTableColumn:row:是"必需的".

紧挨着这一点,它表示tableView:setObjectValue:forTableColumn:row:"仅基于单元格的表"是必需的,这表明编写此文档的人知道基于视图的表,这tableView:objectValueForTableColumn:row:是基于视图的表所必需的.

方法tableView:objectValueForTableColumn:row:本身的文档说:

注意:除非您的应用程序使用Cocoa绑定向表视图提供数据,否则此方法是必需的.

但与其他方法不同的是,没有提到基于视图的表是不必要的.

然而,如果需要,我无法弄清楚它的用途.如果是这样,那个和-tableView:viewForTableColumn:row:它之间的关系是什么,它还需要一个表,一列和一行,并返回要在那里显示的东西?

在一些简短的测试中,看起来NSTableView将-tableView:objectValueForTableColumn:row:在定义时使用,如果没有,它将使用-tableView:viewForTableColumn:row:.如果它们都被定义,它会同时调用它们,但只使用前者进行显示.

如果我正在编写基于视图的NSTableView,是否有任何理由来实现此方法?

use*_*855 6

,尽管所有文档都说"强制"和"必需",但NSTableView.h头文件说:

"基于单元格"的TableView需要此方法,对于"基于视图"的TableView,此方法是可选的.

如果您执行-tableView:viewForTableColumn:row:所有必要的工作来显示数据,则无需实现其他方法.

头文件还说明了为什么可以为基于视图的表实现它:

如果在后一种情况下实现,如果视图响应-setObjectValue:(例如NSControl和NSTableCellView),则该值将设置为给定行/列的视图.

这似乎并不比在普通的基于视图的方法中实现它更容易,因此它似乎更像是一个升级兼容性功能,而不是您实际想要在新应用程序中使用的功能.