0

教程中的可可工作表编程中,我被告知调用以下方法:

[[alert beginSheetModalForWindow:[searchField window] 
    modalDelegate:self 
    didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) 
    contextInfo:nil];

我用红宝石写了如下,

alert.beginSheetModalForWindow(self.window, 
    modalDelegate:self,
    didEndSelector: :alertDidEnd,
    contextInfo:nil)

当然,这didEndSelector部分是错误的。稍后在我的代码中,我有一个方法 alertDidEnd,它将 returnCode 和 contextInfo 作为参数。当我查看时,self.methods我注意到该方法被列为alertDidEnd:returnCode:contextInfo:. 在上面的示例代码中,“@”用于标记选择器。这是在 Macruby 中使用符号完成的,但在这种情况下,符号将包含冒号,这是不允许的。我应该如何将此方法名称表示为符号?我自己无法找到这些信息,我应该去哪里寻找我没有找到的信息?

谢谢!

4

2 回答 2

2

MacRuby 文档中所述,符号与选择器桥接。所以你会这样做:

alert.beginSheetModalForWindow(self.window, 
    modalDelegate:self,
    didEndSelector: :'alertDidEnd:returnCode:contextInfo:',
    contextInfo:nil)
于 2011-07-18T23:16:21.720 回答
1

您是否尝试过使用符号?它似乎在 RubyCocoa 中工作。

于 2011-07-18T23:10:27.123 回答