【问题标题】:MacRuby, sheet errorMacRuby,工作表错误
【发布时间】:2009-10-11 04:10:37
【问题描述】:

我正在使用 MacRuby 0.5 运行并且我有一个方法:

 attr_accessor :bookmarkSheet, :mainWindow

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

应该在主窗口上打开一个工作表面板。但是,每当我运行此方法时,我都会得到 ​​p>

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

关于我为什么会收到此错误的任何想法?我似乎找不到任何地方列出我收到此错误的原因。谢谢

【问题讨论】:

    标签: ruby cocoa macos macruby


    【解决方案1】:

    Peter 是对的,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 beta 版本的一个错误,我鼓励您在 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];
    }
    

    如您所见,您应该可以将结束选择器设置为 nil。与此同时,我的解决方法会很好。

    祝你好运,

    • 马特

    【讨论】:

    • 完美。但请注意,我的方法名称后不需要额外的冒号。它以这种方式工作,但引发了异常。谢谢你们的帮助。关于为什么会发生该错误的任何线索?
    【解决方案2】:

    因为您将nil 作为didEndSelector: 传递。你需要在那里传递一个选择器。

    【讨论】:

      【解决方案3】:

      只是给阅读此主题的每个人的简短说明。在 MacRuby 中发现错误时,即使您不确定,也请发送电子邮件至邮件列表http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel 并提交错误报告:https://www.macruby.org/trac/newticket

      您当然也可以在这里发帖并在 Twitter 上提问,但如果您发现 MacRuby 有问题并且想要修复它,您真的需要提交错误报告。

      更新: 票已提交here。 (检查票以了解状态更新)

      谢谢,

      【讨论】:

      • 你们速度很快。错误已修复!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      相关资源
      最近更新 更多