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
> [email protected]
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel