2010-10-13 3 views
0

En Objective-C, est-il possible d'accéder à des variables d'instance et à des méthodes dans le cadre d'une fonction c statique? J'ai l'impression qu'il y a probablement une réponse simple à cette question que je néglige, mais je suis encore relativement nouveau dans cette langue.Accès aux variables d'instance et aux méthodes à partir d'une fonction c

Examinez le code dépouillé suivant:

@implementation MyObject 

static int ammoHitSensor(cpArbiter *arb, cpSpace *space, void *unused) 
{ 
    // Call an instance method - doesn't work, self is undefined! 
    [self doSomethingElse]; 
} 

-(id)init 
{ 
    // Code to create graphics, etc, hidden for clarity 
    // Adding a collision handler in the Chipmunk physics library 
    cpSpaceAddCollisionHandler(space, COL_TYPE_AMMO, COL_TYPE_SENSOR, ammoHitSensor, NULL, NULL, NULL, NULL); 
} 

-(void)doSomethingElse 
{ 
    // Stuff happens 
} 

@end 

Je pense que oui une fois que je reçois dans le cadre de ammoHitSensor, j'espère qu'il ya un moyen de revenir dans le cadre de MyObject. Jusqu'à présent, je n'ai pas eu de chance.

Répondre

2

Vous devez passer le self lorsque vous appelez cette fonction C. Les fonctions C n'ont pas self ou _cmd puisqu'elles ne résident pas dans les objets (quel que soit l'endroit où vous les mettez dans votre code).

+0

Aha, qui a fait l'affaire. Merci! –

1

Essayez ceci:

static int ammoHitSensor(cpArbiter *arb, cpSpace *space, void *obj) 
{ 
    [(MyObject*)obj doSomethingElse]; 
} 

-(id)init 
{ 
    cpSpaceAddCollisionHandler(space, COL_TYPE_AMMO, COL_TYPE_SENSOR, ammoHitSensor, NULL, NULL, NULL, self); 
} 
Questions connexes