Soy principalmente un chico de C++. Como C++ carece de un ABI oficial, siempre uso un enfoque tipo COM para diseños de componentes que admiten más de un compilador.Objective-C estable ABI
Recientemente me encontré con la pregunta si Objective-C sería un reemplazo para el enfoque tipo COM. Obviamente para que Objective-C sea un reemplazo uno necesitaría un ABI estable, por lo tanto, me gustaría saber si existe un ABI estable para Objective-C (en todos los sistemas operativos principales [OSX, GNU/Linux, Windows]) y qué fácil sería usar Objective-C (++) como "pegamento" entre componentes creados por diferentes compiladores.
EDIT: Como Nikolai Ruhe señaló una breve descripción de COM puede ser útil. COM es esencialmente un "estándar binario" que permite mezclar binarios de diferentes compiladores (y en una variedad de idiomas). El vehículo de COM son las interfaces, que definen los métodos (que se asignan a las funciones virtuales de C++). Los componentes implementan al menos una interfaz y se distribuyen como DLL. Se pueden ubicar en cualquier lugar del sistema (la posición se especifica en el Registro) y cualquier cliente COM puede cargarlos a través de la ID de la interfaz que implementan.
Está obviamente dirigiéndose a personas de Objective-C. Seguramente sería útil si describieras un poco "el enfoque tipo COM". No tengo idea de qué es eso. –
@NikolaiRuhe gracias, acabo de hacer eso, espero que explique cómo funciona COM (en un nivel básico) – MFH
Actualmente tengo mi "propia versión de COM" - bien sin soporte para lenguajes que no son C++ ^^ Solo pensé que tal vez algo como Objective-C++ sería una forma más elegante (ya que cualquier cosa como COM parece ser poco elegante en cierta medida [aunque oculto eso a través de los envoltorios en mi implementación actual]). No es que mi diseño actual no sea utilizable: en realidad estoy generando una gran cantidad de archivos [VTABLES, Wrappers, ...] de un lenguaje simple, pero eso aún agrega la sobrecarga de tener 2 programas en lugar de solo el compilador. .. – MFH