[MacRuby-devel] Strange behaviour when using a Proc for a callback

Joshua Ballanco jballanc at gmail.com
Thu Feb 3 07:47:40 PST 2011


Looks like a bug with the way the Cocoa object is boxed. Can you file it at
https://www.macruby.org/trac/newticket ?

Cheers,

Josh

On Wed, Feb 2, 2011 at 8:51 PM, Mark Rada <mrada at marketcircle.com> wrote:

> Hi,
>
> I was trying to setup an async callback using a proc instead of a method to
> register for app launching notifications. For some reason, when I use the
> proc method, I get the wrong object passed to the proc
> when it gets called.
>
> The version using a method callback:
>
>        framework 'Cocoa'
>
>        def callback notif
>          puts notif.class
>          puts notif.inspect
>          puts notif.userInfo.inspect
>        end
>
>        def launch_mail
>          workspace = NSWorkspace.sharedWorkspace
>
>          workspace.notificationCenter.addObserver self,
>                                          selector:'callback:',
>
>  name:NSWorkspaceDidLaunchApplicationNotification,
>                                            object:nil
>
>          workspace.launchAppWithBundleIdentifier 'com.apple.mail',
>                                          options:NSWorkspaceLaunchAsync,
>                   additionalEventParamDescriptor:nil,
>                                 launchIdentifier:nil
>        end
>
>        launch_mail
>        NSRunLoop.currentRunLoop.runUntilDate( Time.now + 5 )
>
>
> That code will work the way that I expected it to, but if I try to use a
> proc:
>
>
>        framework 'Cocoa'
>
>        callback = Proc.new { |notif|
>          puts notif.class
>          puts notif.inspect
>          puts notif.userInfo.inspect
>        }
>
>        workspace = NSWorkspace.sharedWorkspace
>
>        workspace.notificationCenter.addObserver callback,
>                                        selector:'call:',
>
>  name:NSWorkspaceDidLaunchApplicationNotification,
>                                          object:nil
>
>        workspace.launchAppWithBundleIdentifier 'com.apple.mail',
>                                        options:NSWorkspaceLaunchAsync,
>                 additionalEventParamDescriptor:nil,
>                               launchIdentifier:nil
>
>        NSRunLoop.currentRunLoop.runUntilDate( Time.now + 5 )
>
>
> It will crash because for some reason I am not getting the notification
> back as I should, instead I am getting a reference to the NSDictionary
> class.
>
> I don't think this is the intended behaviour in MacRuby, but I'm not sure
> if what I am trying to do is supported.
>
> Is the ability to use a proc as a callback a supported feature? It has
> worked for me in other cases.
>
>
> Mark Rada
> mrada at marketcircle.com
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20110203/a49f60d6/attachment.html>


More information about the MacRuby-devel mailing list