Je suis en train de mixer des parties Objective-C dans un projet C++ (ne discutez pas à ce sujet, sa multiplateforme).
Je veux maintenant appeler certaines fonctions ou méthodes C++ sur le thread correct (c'est-à-dire le thread principal) dans un environnement de cacao.passer des pointeurs ou des types entiers via performSelector
Mon approche actuelle passe des pointeurs de fonction à une instance d'objectif-c (dérivée de NSObject
) et fait performSelector
/performSelectorOnMainThread
sur elle.
Mais les performSelector
s s'attendent à ce que les objets soient leurs arguments, alors comment l'envelopperiez-vous habituellement?
Exemple:
typedef void(*FnPtr)(void*);
FnPtr fn;
[someInstance performSelector:@selector(test:) withObject:fn];
... où test est déclaré:
- (void)test:(FnPtr)fn;
dois ajouter que je ne ai commencé avec c-objectif cette semaine, donc s'il y a une meilleure façon Je serais aussi heureux d'en entendre parler.
Notez également que je n'ai aucun accès à la boucle principale ou aux objets de l'application, car le projet est un plug-in de navigateur (qui ne cible actuellement que Safari sur le mac).
dupliquer: http://stackoverflow.com/questions/1185549/passing-a-native-pointer-to-performselectoronmainthreads-withobject-argument –