On Thursday 09 July 2009 1:46:59 am Rolf Kalbermatter wrote:
Adam Strzelecki [mailto:ono@java.pl]
Cocoa is the proper Obj-C API for OSX UI & graphics. OSX is NextStep based objective oriented GUI & OS. And Obj-C is a basement of both NextStep and OSX. So if you want to write OSX GUI application properly you have to use Obj-C, same as C++ & KDE and so on.
With the same argument you could say that writing COM objects has to be done in C++. Yet Wine has lots and lots of COM code written all in standard C.
It has to, because the class vtable layout and calling convention can be different in Windows than how the host system's compiler will generate it. COM objects have to interface with existing Windows code, and so need to be setup in memory in a specific way.
By contrast, an OSX-specific driver can use Obj-C without consequence to existing Windows code. As long as said driver can expose a C-only interface for gdi32 or whatever, the Obj-C code is entirely self-contained and anything outside the app is none-the-wiser.
If OSX will always have Obj-C support, and the Obj-C code can be restricted to OSX-only code, then the only sticking point, in my eyes, would be how maintainable it is. After all, if only one or two people can work with Obj-C code, it can bit-rot that much more quickly.