Hi! I totally agree that it is a little confusing. But #new an #new(owner) are two different methods, especially in Obj-C. Calling A.new(arg) cannot call -init, since -init doesn't take any argument, so it will call any initializer method that takes one argument :-). This is why:
class A; def initialize; end; end; # Will never be called with A.new, because -init will be called instead class A; def initialize(str); end; end; # Will be called with A.new(str), because -init cannot be called It simply depends on how you define your initilizer method :-) -- Thibault Martin-Lagardette On May 6, 2010, at 21:54, Terry Moore wrote: > This is only true if you follow objc init I think... for example... > > > I came across this problem with NSWindowController and it took me a while to > figure out. > > class PasswordController < NSWindowController > def initialize > initWithWindowNibName("Password") ##FAIL Never called! init called > instead > end > > class PrefController < NSWindowController > > def initialize(owner) > @owner = owner > initWithWindowNibName("Preferences") > end > end > > > The first example fails and so I finally got that I needed the init method to > make the window appear but I couldn't figure out why the second option worked. > > Must have been a long day but clearly if designate an initialize with a param > init is bypased... > > so if I take the > class A <String > def initialize(b) > super > end > end > example and do A.new("hi there") gives > > initialize > => "hi there" > > so what is going on? I think there might need to be some clarity..... > > Terry > > > _______________________________________________ > 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