On 2012-10-14 22:58, Michel Fortin wrote:

By

the way, that line is half-fishy:

     super_struct.super_class = cast(objc.Class) OS.objc_msgSend(id, 
OS.sel_superclass);

It'll
work as long as you have only one level of derived classes, and only as
long as you don't have a class that overrides the superclass method
(which would be weird, I acknowledge). You should be aware of this if
you're creating new object classes, especially the first part (the
second part is only relevant if you wish to implement some kind of proxy
objects).

Theoretically, I think it'd be better to use directly functions from the
Objective-C runtime[1], which also avoids the dynamic dispatch overhead
of objc_msgSend:

     super_struct.super_class = class_getSuperclass(object_getClass(id));

Thanks for the pointer. As a first step I'm only porting the Java code to D and this is how the Java code looks like. I'm trying to stay as close as possible to the Java code, making it easier to port future versions of SWT. But I also want the code to be correct.

--
/Jacob Carlborg

Reply via email to