[MacRuby-devel] Accessing Obj-C InstVars from Ruby

Laurent Sansonetti lsansonetti at apple.com
Mon Mar 30 12:14:18 PDT 2009


Hi John & Edward,

On Mar 30, 2009, at 11:27 AM, John Shea wrote:

> Hello Edward,
>
> well since no one else has answered i will speculate a bit (it might
> provoke someone wiser).
>
> I assume that the Ruby and the Objective C class are magically married
> together perhaps via some sort of proxy class - since you cant as far
> as i know add to an objective C class more instance methods - and
> inserting a compiled class into a ruby class must be also problematic
> - anyway it seems complicated. So I assume that the ruby class is
> actually still a separate class. I must admit i never tried to extend
> a compiled object C class - and I surprised it works as well as it
> does.

In MacRuby, a Ruby class is a true Objective-C class. We try to use  
the Objective-C runtime for everything possible, however, because of  
some limitations of Objective-C there are things we need to do on the  
side, like for example maintaining instance variables (in Objective-C  
you cannot add an instance variable dynamically to a class).

> On 3/30/09, Edward Hynes <ehynes at dharmagaia.com> wrote:
>> Is there a way to access instance variables defined in an Objective-C
>> class from a Ruby extension?

It is currently not implemented, but it's technically possible. A good  
work-around is to define accessors (properties) as John mentioned.

Laurent


More information about the MacRuby-devel mailing list