2010-05-24 19 views
5

Me gustaría hacer algún tipo de reenvío en mi proyecto mixto C++/ObjC.¿Utiliza un método C++ como selector ObjC?

Mi lógica está en C++, y deseo proporcionar un método que pertenezca a una instancia de objeto C++ como un selector para objC. ¿Hay alguna forma de hacer esto?

Principalmente, la pregunta es, ¿hay alguna forma de falsificar un método de C++ en un selector :), dársela a ObjC y permitir que vuelva a llamarse?

Gracias de antemano, Anoide.

Respuesta

3

Es imposible obtener un selector para un método C++ ya que estos no están gestionados por el tiempo de ejecución de Objective-C. Puede, sin embargo:

  • Utilice un C puntero de función normal ++ para implementar una devolución de llamada
  • O: Crear un método de Objective-C (mejor sería un método de clase) para envolver la llamada a su C método ++. Puede usar el selector para esta función luego.
0

Usted puede envolver el objeto de C++ en un objeto de Objective-C de proxy:

@interface MyObjCClass: NSObject { 
    MyCPPClass *thing; 
} 
-(int)foo; 
@end 

@implementation MyObjCClass { 

    -(id)init { 
    if (self = [super init]) { 
     thing = new MyCPPClass(); 
    } 
    return self; 
    } 

    -(void)dealloc { 
    delete thing; // It's been a long time since I last did C++; I may have the incorrect syntax here 
    [super init]; 
    } 

    -(int)foo { 
    return thing->foo(); 
    } 
} 
@end 
Cuestiones relacionadas