2010-05-24 22 views
5

mi piacerebbe fare qualche tipo di inoltro nel mio progetto C++ misto/objC.Utilizzo di un metodo C++ come selettore ObjC?

mia logica è in C++, e voglio fornire un metodo che appartiene ad un oggetto C++ come esempio un selettore per objc. C'è un modo per fare questo?

Principalmente la domanda è: Esiste un modo per fingere un metodo di C++ in un selettore :), per dare a objC e Let It Be richiamato ?.

Grazie in anticipo, Anoide.

risposta

3

È impossibile ottenere un selettore per un metodo C++ come questi non sono gestite dal runtime Objective-C. È possibile, tuttavia:

  • Utilizzare un normale C puntatore a funzione ++ per implementare una funzione di callback
  • Oppure: Creare un metodo di Objective-C (meglio sarebbe un metodo di classe) per avvolgere la chiamata al metodo C++. È quindi possibile utilizzare il selettore per questa funzione.
0

Si potrebbe avvolgere oggetto C++ in un oggetto Objective-C di 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 
Problemi correlati