0

在 mac osx 10.7 上使用 cocoa 我用一些行填充了一个 TableView,我有一些困惑,

names 是一个 NSArray* 包含 NSString*

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
{
  return [names objectAtIndex:rowIndex];
}

我检查了苹果文档中数据源的协议参考

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html

我在上面的函数中返回一个 NSString* ,该方法的签名只返回 id 而不是 NSString* 。文档没有让我知道它刚刚说的返回类型

 An item in the data source in the specified tableColumn of the view.

我的案例很简单 NSString* 是有道理的,它有效,但我不确定。我想知道这个隐含的知识来自哪里,这个方法必须返回什么类型的数据,因为签名中没有提到,方法的文档中也没有提到:/

有什么建议吗?我来自 .Net/android/ 背景,那里的文档更有意义,可能是因为这些是强类型语言,...

4

1 回答 1

0

您应该返回的对象类型取决于 NSTableView 中单元格的定义方式。默认情况下,当您在 Interface Builder 中创建 NSTableView 时,单元格被定义为 NSTextFieldCell,因此可以为这些单元格返回 NSString。但是,您可以在代码中定义单元格以接受其他类型的对象(例如 NSImageCell、NSButtonCell 等)。

于 2013-02-04T07:16:31.307 回答