在mac osx 10.7上使用cocoa我用一些行填充了一个TableView,我有一些混淆,
names是包含NSString *
的NSArray *- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
{
return [names objectAtIndex:rowIndex];
}
我在apple的文档中检查了数据源的协议引用
我在上面的函数中返回一个NSString *,该方法的签名只返回id而不是NSString *。文档没有告诉我它刚刚说的返回类型
An item in the data source in the specified tableColumn of the view.
我的情况是简单的NSString *有意义并且它有效,但我不确定。我想知道这个隐含的知识来自于这个方法必须返回什么类型的数据,因为签名中没有提及,方法的文档中没有任何内容:/
有什么建议吗?我来自.Net / android / background那里的文档更有意义,因为那些是强类型语言,...
答案 0 :(得分:0)
您应返回的对象类型取决于NSTableView中单元格的定义方式。默认情况下,在Interface Builder中创建NSTableView时,单元格定义为NSTextFieldCell,因此可以为这些单元格返回NSString。但是,您可以定义单元格以接受代码中的其他类型的对象(例如NSImageCell,NSButtonCell等)。