Stefan Rieken wrote:

>       6. GNUstep now uses REALLY black magic to connect the outlets to
>           the UI components. How does it do this? There are no methods
>           in the user-built class that send the contents of any of the
>           "outlet" instance variables to any other object. As far as
>           I've learnt OO and Objective-C, there's NO way for the UI
>           objects to get these instance variables if there's no method
>           for it (e.g. [rectangle length]). How how how?
>

Its not black magic its the Objective-C runtime.  Take a read through 
Object.h and objc-api.h. In obj-api.h you'll find raw access to the 
runtime. You should be able to see that from this you can build the 
functionality found in Object.h. And from there you can build the 
functionality found in Gorm. It becomes a matter of building a more 
friendly or powerful bunch of functionality for the task at hand.

On my system they're in 
/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/include/objc. You'll find 
types, structures, functions and methods which can:

Describe a class's methods and instance variables which is useful for 
building the GUI for connecting outlets and actions.
    - (struct objc_method_description *)descriptionForMethod:(SEL)aSel;
   

Execute methods and their underlying functions which is useful for 
making the target/action work and unarchiving the .gorm files.
    - perform:(SEL)aSel with:anObject;
    + (IMP)instanceMethodFor:(SEL)aSel;

    IMP method_get_imp(Method_t method)
   

Give access to instance variables which is useful when a class doesn't 
provide a  -setMyVariable: method.
    typdef for  IvarList

After you get a feel for what the Obj-C runtime provides compare it with 
what C++(almost nothing) or Java(Reflection) provides.

Hope this helps,
Bob




_______________________________________________
Help-gnustep mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-gnustep

Reply via email to