Питер прав, didEndSelector: ожидает селектора, вы должны попробовать что-то вроде:
def bookmark_created
puts "Bookmark created"
end
def createBookmark(sender)
NSApp.beginSheet(bookmarkSheet,
modalForWindow:mainWindow,
modalDelegate:self,
didEndSelector:"bookmark_created:",
contextInfo:nil)
end
Обратите внимание, как я добавил двоеточие после имени метода для вызова.
Кроме того, это похоже на ошибку в бета-версии MacRuby, я рекомендую вам сообщить об ошибке на трекере MacRuby: http://www.macruby.org/trac/newticket
Вот пример, приведенный в документации Apple:
- (void)showCustomDialog: (NSWindow *)window
// User has asked to see the dialog. Display it.
{
if (!myCustomDialog)
[NSBundle loadNibNamed: @"MyCustomDialog" owner: self];
[NSApp beginSheet: myCustomDialog
modalForWindow: window
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
[NSApp runModalForWindow: myCustomDialog];
// Dialog is up here.
[NSApp endSheet: myCustomDialog];
[myCustomDialog orderOut: self];
}
Как видите, вы должны установить конечный селектор на ноль. Тем временем мой обходной путь будет работать нормально.
Удачи,