[Mono-list] Re: Is Objective-C support possible?
Yonas Jongkind
yonasj@goodue.com
Fri, 15 Feb 2002 10:05:50 -0800
I however, may be qualified to help a little bit here, as a long time
Objective-C programmer.
Were you to write Objective-C support for .NET the biggest performance
challenge would be getting selectors to work. The method dispatch system in
.NET is vtable oriented, but Objective-C is based on dynamic dispatch.
You could use the reflection calls to dispatch a selector on every call,
but this would be slow. Or you could implement sarray (Sparse Arrays) to do
dynamic dispatch, however using sarray would make Objective-C objects
incompatible with .NET objects. :(
This was a design tradeoff by the .NET designers, vtables are fast and
dynamic dispatch is awesome. Dynamic dispatch makes Objective-C what it is.
MS chose fast...
Any by the way, Categories are __AWESOME__. They allow you to customize
classes in ways that are not possible in other systems. These people often
resort to hacks like __FACTORIES__.
Quick lesson on Categories (not interfaces). Categories are not multiple
inheritance, they are still single inheritance. However the inheritance
chain is dynamic at runtime, so you can insert new classes into the chain.
However you could add the categories to the system using some re-naming
tricks at runtime by injecting new types into the system.
Yonas.