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