2011-05-30 4 views
0

Salut i ont une fonction sur une classe qui est comme ceci:appeler une fonction

- (Float32)averagePower { 
    if (![self isListening]) 
     return 0.0; 
    float tmp = [self levels][0].mAveragePower; 
    tmp = tmp * 100; 
    NSLog(@"%f", tmp); 
    return tmp; 
} 

je l'appelle de viewDidLoad d'une autre classe comme ceci:

SoundSensor *theInstance = [[SoundSensor alloc] init]; 
    [theInstance listen]; 
    Float32 tmp; 
    [theInstance averagePower:tmp]; 

maintenant je peux appeler à J'écoute mais quand j'appelle à la puissance moyenne j'ai eu l'avertissement qu'il peut ne pas répondre et la fonction s'écrase dans la simulation. qu'est-ce que je fais de mal?

merci beaucoup.

Répondre

1

Vous essayez de transmettre une variable à une fonction qui n'accepte aucun paramètre.

Ce que je vous attends intention de faire est la suivante:

Float32 tmp = [theInstance averagePower]; 
+0

Merci, mais quand je fais ce qu'il a dit: variable inutilisée « tmp ». alors comment dois-je l'appeler? – Curnelious

+0

ok quand je fais ceci: Float32 tmp; et ensuite faire l'assignation dans une autre ligne, son fonctionnement. étrange, je ne comprends pas, mais merci beaucoup – Curnelious

+0

Vous obtenez des avertissements de "variable inutilisée" parce que vous affectez la variable mais ne l'utilisez pas encore. – badgerr

3

Vous appelez la méthode avec un paramètre:

[theInstance averagePower:tmp]; 

mais il n'a pas de paramètres dans sa définition:

- (Float32)averagePower { 
// ... 
} 

Ceci est à l'origine du crash. Si vous essayez d'affecter la valeur de retour de la méthode à la variable tmp, vous devriez faire ceci:

Float32 tmp = [theInstance averagePower]; 

Pour se débarrasser de la faire avertissement que vous déclarez cette méthode dans le bloc d'interface de la classe correspondante (le fichier h).

Questions connexes