0

我知道这可能是一个简单的问题,但这是我绞尽脑汁想弄清楚的问题:

我知道这个:

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];

}

将返回提供的索引处的项目。我的问题是,我需要使用什么代码来调用这个例程?

我试过这样的事情:

NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);

但我得到一个“错误:'comboBox'未声明”

谁能帮我解决我搞砸的概念?

4

1 回答 1

2

首先,您可能想阅读Objective-C 编程语言来学习向对象(包括您自己)发送消息的正确语法。

您收到一条无意义的错误消息,因为您编写了(Objective-C 中的内容)无意义的代码。一个有效的 Objective-C 消息表达式会编译并成功运行,但我认为它不会像你期望的那样做。

您看(这是第二件事),comboBox:objectValueForItemAtIndex:通常不是您发送给自己的消息。当您是组合框的数据源时,组合框会将该消息发送给您。数据源是委托模式的一种变体,在Cocoa Fundamentals Guide中有详细描述。

(您可以将消息发送给自己,如果您故意想要通过与组合框相同的对象-值-检索路径,这样做甚至可能有意义,但这不是您需要做的组合框工作。)

Language 文档和 Cocoa Fundamentals 文档都是每个 Cocoa 程序员的必备阅读材料,以及 Cocoa内存管理指南。您应该从头到尾阅读所有三个文档。

您当前问题的解决方案是将响应的对象comboBox:objectValueForItemAtIndex:作为组合框的数据源。您可能会将其连接到 IB 中,在您创建组合框的同一笔尖中。

如果这些都没有任何意义,那么我能向您建议的只是再次阅读这些文件。他们会解释一切。

如果您真的只是想以与组合框相同的方式询问自己的对象值(即,您的组合框已经在工作并打算以相同的方式获取对象值以用于其他目的),那么您仍然需要阅读 Objective-C 编程语言文档以学习正确的语法来向自己发送该消息。

于 2010-10-27T23:11:18.340 回答