MacRuby, ошибка листа - PullRequest
       125

MacRuby, ошибка листа

1 голос
/ 10 октября 2009

Я использую MacRuby 0.5 и у меня есть метод:

 attr_accessor :bookmarkSheet, :mainWindow

def createBookmark(sender)
  NSApp.beginSheet(bookmarkSheet, 
   modalForWindow:mainWindow, 
   modalDelegate:self, 
   didEndSelector:nil,
   contextInfo:nil)   
 end

, который должен открыть панель листа в главном окне. Однако всякий раз, когда я запускаю этот метод, я получаю

2009-10-10 12:27:45.270 Application[45467:a0f] nil is not a symbol

Есть мысли, почему я получаю эту ошибку? Кажется, я нигде не могу найти причину, по которой я получаю эту ошибку. Спасибо

Ответы [ 3 ]

1 голос
/ 10 октября 2009

Питер прав, 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];
}

Как видите, вы должны установить конечный селектор на ноль. Тем временем мой обходной путь будет работать нормально.

Удачи,

  • Мэтт
0 голосов
/ 10 октября 2009

Просто краткая заметка для всех, кто читает эту ветку. При обнаружении ошибок в MacRuby, даже если вы не уверены, пожалуйста, напишите в список рассылки http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel и отправьте отчет об ошибке: https://www.macruby.org/trac/newticket

Вы также можете написать здесь и спросить в Твиттере, но если вы обнаружите, что с MacRuby что-то не так и хотите исправить это, вам действительно нужно отправить сообщение об ошибке.

Обновление: тикет подан здесь . (проверьте билет для обновления статуса)

Спасибо

0 голосов
/ 10 октября 2009

Потому что вы передаете nil как didEndSelector:. Вам нужно передать селектор туда.

...