Brilliant suggestion Eloy, much appreciated. There's a noticeable improvement in speed using this technique. In the method which added ruby objects to an array, 77% of the time was spent on initialising the objects, that's now down to 35%.
Alan On 17 Jan 2011, at 13:32, Eloy Durán wrote: > After the Ruby code that defines the class has been evaled, you should be > able to do the following: > > Class rubyClass = NSClassFromString(@"RubyClass"); > id rubyObject = [[rubyClass alloc] init]; > > On Jan 17, 2011, at 2:05 PM, 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