[MacRuby-devel] How do I subclass Obj-C classes in MacRuby?

Thibault Martin-Lagardette thibault.ml at gmail.com
Thu May 6 23:09:54 PDT 2010


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 at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20100506/a5ecc7e1/attachment.html>


More information about the MacRuby-devel mailing list