Thanks Laurent, I'd forgotten about performRubySelector:. The ruby class I'm using takes 2 args, one of them a default argument, so I created an initWith method to work around that - problem solved now.
Alan On 17 Jan 2011, at 21:51, Laurent Sansonetti wrote: > Hi Alan, > > When performing Ruby selectors on Ruby objects from Objective-C, the > performRubySelector: method should be used instead of performSelector:, > because it takes care of special Ruby semantics such as splat or default > arguments. > > [RubyClass performRubySelector:@selector(new:) withArguments: arg, > NULL]; > > Laurent > > On Jan 17, 2011, at 5:05 AM, Alan Skipp wrote: > >> Hi, >> Is there any way to inform an Objective-C class of the existence of a ruby >> class so that instances can be created in Objective-C code? >> Currently I am doing the following: >> >> [[MacRuby sharedRuntime] evaluateString:[NSString >> stringWithFormat:@"RubyClass.new('%@')", arg]]; >> >> If I'm adding quite a few objects (300+) to an array in a loop, this line of >> code is quite slow. My assumption (which may be false) is that either of the >> 3 options below would be quicker. >> >> [RubyClass performSelector:@selector(new:) withObject:arg]; >> [RubyClass new:arg]; >> [[RubyClass alloc] initWithArg:arg]; >> >> Are any of those options (or an equivalent) a possibility? >> >> Alan >> _______________________________________________ >> 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