The reason #new currently behaves this way is to work for every object, wether 
it's Ruby or Cocoa.
For #new to work like you expect (which I agree totally makes sense), instead 
of having #new aliasing [[obj alloc] init], we could alias it to [[obj alloc] 
initialize], and have -initialize redirect to -init on Foundation objects.
I don't know how expected that would be, or if it has any drawback...
Laurent, what's your take on that?

-- 
Thibault Martin-Lagardette



On May 6, 2010, at 22:09, russell muetzelfeldt wrote:

> On 07/05/2010, at 2:17 PM, Thibault Martin-Lagardette wrote:
> 
>> Glad it works :-)
>> 
>> The reason why your example doesn't work is because in MacRuby, String 
>> descends from NSString, which is a Foundation object. Foundation objects use 
>> "init" and not "initalize", and for syntaxic sugar reasons, #new is aliased 
>> to [[obj alloc] init] on Foundation objects :-).
> 
> oh, I understand the implementation detail, I just think it's wrong for a 
> Ruby implementation to behave that way - this isn't just a matter of 
> extending Ruby syntax to support access to Obj-C but rather a change that can 
> break existing Ruby code...
> 
> what I would expect in this case is for the class I've written in ruby to 
> have initialize called like all other classes written in ruby, and leave it 
> to me to correctly call the designated initializer of my superclass, which I 
> know is -init because I'm subclassing Obj-C code...
> 
> 
>> On non-Foundation objects, #new behaves as you expect (the ruby way)
> 
> yeah, and with things like my OpenDirectory wrapper I can live with it... but 
> when the behaviour of subclassing standard Ruby types differs between the 
> reference implementation and MacRuby I'd be calling that a bug in MacRuby...
> 
> 
>> I agree this difference can be confusing, and I think it could find its 
>> place in a certain book *stares at Matt*
> 
> it doesn't need documenting, it needs fixing... :)
> 
> I guess it all depends whether you're looking at MacRuby as a new language 
> for writing Cocoa applications, or as a runtime for Ruby applications on 
> OSX...
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel@lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to