[MacRuby-devel] Behaviour when local variables pointing to non-auto-retained objects go out of scope?
Michael Johnston
lastobelus at mac.com
Tue Jan 5 01:52:46 PST 2010
Note that I'm aware {{{ image =
NSImage.alloc.initWithContentsOfFile("stretch.tiff") }}} should be
{{{ image = NSImage.new.initWithContentsOfFile("stretch.tiff") }}}, I
just forgot to change back one of my experiments. It doesn't affect
anything in this example though.
Cheerio,
Michael Johnston
lastobelus at mac.com
On 5-Jan-10, at 1:30 AM, Michael Johnston wrote:
> I just purchased the book Programming Cocoa with Ruby, and am
> working through the examples using Macruby.
>
> This tiny app works fine in rubycocoa, but in macruby the created
> statusbar item immediately disappears.
>
> {{{
> #!/usr/bin/env macruby
> framework 'cocoa'
>
> class App
> def applicationDidFinishLaunching(aNotification)
> statusbar = NSStatusBar.systemStatusBar
> status_item =
> statusbar.statusItemWithLength(NSVariableStatusItemLength)
>
> image = NSImage.alloc.initWithContentsOfFile("stretch.tiff")
> raise "Icon file 'stretch.tiff' is missing." unless image
>
> status_item.setImage(image)
> end
> end
>
> NSApplication.sharedApplication
> NSApp.delegate = App.new
> NSApp.run
>
> }}}
>
> I assumed this had to do with garbage collection because in obj C
> status_item would have to be retained, and so I changed
> "status_item" to "@status_item" and then it works fine.
>
> However while playing around with it I also noticed that if I leave
> status_item as a local var and add a "sleep 1" at the end of
> applicationDidFinishLaunching, it also works fine and the status
> item never disappears.
>
> So now I'm not sure whether there is a bug or not. In general, what
> is the intended behaviour of Macruby with local variables referring
> to objects that would have to be retained in obj C when said
> variables go out of scope?
> Cheerio,
>
> Michael Johnston
> lastobelus at mac.com
>
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
More information about the MacRuby-devel
mailing list