2009-04-02 9 views
5

Estoy buscando una opinión de los desarrolladores de Mac/iPhone sobre un nuevo proyecto. La idea es comenzar una iniciativa de código abierto usando swig (www.swig.org) para generar automáticamente el puente del objetivo c al C++ para que uno pueda acceder a aplicaciones C++ desde el toque de cacao/cocoa.Generación automática de código para el puente de Objective C a C++

Apple proporciona un muy buen soporte para mezclar el objetivo c y C++ a través del objetivo C++, pero escribir esos puentes a mano podría ser tedioso y propenso a errores. Lo que este proyecto pretende hacer es proporcionar una forma de generar automáticamente interfaces c objetivas y envolturas sobre C++, de modo que cualquier aplicación táctil de cacao o cacao observe la interfaz objetiva c orientada a objetos con C++ debajo.

Agradecería mucho cualquier opinión o sugerencia sobre esta idea.

Respuesta

1

Me parece una buena idea que me sorprenda si algo así no existe. Por otro lado, dado que puedes compilar C++ directamente, (mira lo que te da una extensión .mm) podría ser algo trivial.

4

No creo que sea necesario. Con Objective-C++, no necesitas un puente en absoluto. Dada una clase C++ definida

class Foo { 
    public: 
    void someMethod(void); 
} 

puede usar esa clase en cualquier lugar del código Objective-C++. Por ejemplo, dentro de un método:

- (void)myObjCMethod { 
    Foo myFoo; 

    myFoo.someMethod(); 

    //etc. 
} 

Usted puede tener variables de instancia que apuntan a clases de C++, por lo que podría definir una clase Objective-C como

@interface Bar : NSObject { 
    Foo *foo; 
} 

@property (assign) Foo * foo; 
@end 

@implementation 
@synthesize foo; 

- (void)dalloc { 
    delete foo; 
    [super dealloc]; 
} 

- (id)init { 
    if(self = [super init]) { 
    foo = new Foo(); 
    } 

    return self; 
} 

- (void)aMethod { 
    self.foo->barMethod(); 
} 

No creo que se pueda la plantilla un método Objective-C, pero las instancias de plantillas C++ en Objective-C++ son un juego limpio. Así como Objective-C es un superconjunto estricto de C, Objective-C++ es un superconjunto de C++, que agrega clases de estilo Objective-C y pasa mensajes.

Si desea "puentear" una clase de C++, tendrá problemas en general, ya que cosas como la herencia múltiple y la sobrecarga del operador no son compatibles con el modelo de objetos de Objective-C.

Cuestiones relacionadas