Hi Rolando,

You shouldn't need to retain the objects as instance variables to keep them from premature garbage collection. In this case, I assume that the Cocos2D framework has been built with -fobjc-gc (otherwise you would get a link error at runtime), but that it's not fully compatible with the GC techniques yet. Passing the -fobjc-gc flag isn't enough sometimes, and one has to migrate the framework.

Some documentation is available here:

http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/GarbageCollection/Introduction.html%23//apple_ref/doc/uid/TP30001223-CJBGIAGF

Laurent

On Jan 13, 2011, at 5:32 AM, Rolando Abarca wrote:

hi all,

I'm having some fun with Cocos2D[1] Mac Version and MacRuby. Some time
ago I wrote ruby bindings for the iPhone version[2], but MacRuby makes
those bindings unnecessary (at least for mac).
So far everything works great! The only problem I'm having so far is
in cases like this:

{{{
some_node = CCSprite.spriteWithFile("some_file.png")
self.addChild(some_node)
}}}

If I do the above, the object will get GCd by the ruby VM (I'm
guessing), but the object should still live the Obj-C world
(internally, each Cocos2D node keeps its children in an array, where
they are retained in the addChild method).
So far, I'm bypassing this by declaring each child an instance
variable, but I'm pretty sure there must be another way... Any idea of
how to overcome this problem?
Btw: cocos2d works using the old retain/release memory management
system, even in the Mac version.

Thanks!,

[1]: http://www.cocos2d-iphone.org
[2]: https://github.com/funkaster/ShinyCocos
--
Rolando Abarca M.
Games For Food S.p.A.
http://www.gamesforfood.com
Phone: +1 (408) 345-5433
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel