> 3) If I have an empty init, e.g., > > def init; super; self; end > > Can I always delete the empty init and get the same result through > inheritance?
Yes, you can omit the #init declaration in this case, it works like a charm, because every Obj-C object (and thus every MacRuby object) inherits from NSObject, that has its own -init method. What this means is if you don't define yours, calling -init on your object will call NSObject's -init, just like in Obj-C :-) class Hello def world puts "Hello world!" end end Hello.alloc.init.world > I don't think I've seen any examples using the initWith method. Is that > method called after init? Simply something of the like: - (id)initWithDelegate:(id)someDelegate { [self setDelegate:someDelegate]; } or - (id)initWithColor:(MRColor)color andBorderSize:(int)borderSize { [self setCubeColor:color]; [self setBorderSize:borderSize]; } Hope this helped :-) -- Thibault Martin-Lagardette On Sep 8, 2010, at 09:22, Matt Aimonetti wrote: > 1) Does MacRuby distinguish between Objective C subclasses and other Ruby > classes or are all classes treated the same? > Not really but Cocoa classes expect to be returned self in the init process > and the Cocoa convention is not to overwrite init but to create your own > initializer using the initWith pattern. In Ruby, #initialize is often > overwritten. > > 2) Can my inheritance path be arbitrarily long before I inherit from NSObject > or an NS subclass? > Yes, consider the following example: > > > class Foo; end; class Bar < Foo; end; class Baz < Bar; end; class Bob < > > Baz; end > => nil > > Bob.ancestors > => [Bob, Baz, Bar, Foo, NSObject, Kernel] > > 3) If I have an empty init, e.g., def init; super; self; end > Can I always delete the empty init and get the same result through > inheritance? > > I am not sure what you mean, sorry :( > > - Matt > > > On Wed, Sep 8, 2010 at 8:50 AM, Robert Rice <rice.au...@pobox.com> wrote: > Thanks Matt: > > Good tutorial on super. Maybe someone could add a keyword section to ruby-doc. > > This leads me to a couple more questions on super and MacRuby inheritance: > > 1) Does MacRuby distinguish between Objective C subclasses and other Ruby > classes or are all classes treated the same? > > 2) Can my inheritance path be arbitrarily long before I inherit from NSObject > or an NS subclass? > > 3) If I have an empty init, e.g., > > def init; super; self; end > > Can I always delete the empty init and get the same result through > inheritance? > > Bob Rice > > > On Sep 7, 2010, at 4:13 PM, Matt Aimonetti wrote: > > > Satish has a good blog post on the matter: > > http://rubylearning.com/satishtalim/ruby_overriding_methods.html > > > > You can certainly call super in your subclass before making any > > modifications or calling super based on a condition. > > > > I hope it helps, > > > > - Matt > > > > Sent from my iPhone > > > > On Sep 7, 2010, at 12:53, Robert Rice <rice.au...@pobox.com> wrote: > > > >> Thanks Matt: > >> > >> I didn't see super in the ruby-doc.org/ruby-1.9/index.html unless super is > >> short for superclass. > >> > >> Can I reach a superclass method without having the message go first to my > >> subclass override of the method? > >> > >> Bob Rice > >> > >> > >> On Sep 7, 2010, at 3:26 PM, Matt Aimonetti wrote: > >> > >>> No it's not unique to MacRuby (Ruby and Obj-C support that feature) and > >>> yes you can pass other arguments :) > >>> > >>> - Matt > >>> > >>> Sent from my iPhone > >>> > >>> On Sep 7, 2010, at 12:16, Robert Rice <rice.au...@pobox.com> wrote: > >>> > >>>> Questions on the super method: > >>>> > >>>> Is the super method unique to MacRuby? > >>>> > >>>> super forwards the current message to the superclass with the same > >>>> method name and arguments. Is there a way to send a message to the > >>>> superclass method with different arguments either from within the > >>>> subclass method of the same name or from outside the subclass method of > >>>> the same name to bypass the subclass method? > >>>> > >>>> Thanks, > >>>> Bob Rice > >>>> > >>>> _______________________________________________ > >>>> 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 > >>> > >> > >> _______________________________________________ > >> 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 > > > > _______________________________________________ > 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
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel