2010-07-30 2 views
1

Je développe une application iPhone et j'utilise xCode pour faire "Construire et analyser". Je reçois le message « récepteur à expresseion est une valeur poubelle » pointant vers la ligne du retour ligne dans mon bon augure ci-dessous:Receiver in expresseion est une valeur d'ordures

-(UIColor*)getLevelColor{ 
UIColor* tempCol; 

if (level==4) { 
    tempCol= [[UIColor alloc] initWithRed:0.39f green:0.82f blue:0.32f alpha:1.0f]; 
}else if (level==5) { 
    tempCol= [[UIColor alloc] initWithRed:0.61f green:0.68f blue:0.83f alpha:1.0f]; 
}else if (level==6) { 
    tempCol= [[UIColor alloc] initWithRed:0.90f green:0.68f blue:0.99f alpha:1.0f]; 
}else if (level==7) { 
    tempCol= [[UIColor alloc] initWithRed:0.68f green:0.97f blue:0.99f alpha:1.0f]; 
} 

return [tempCol autorelease]; 
} 

Comment se fait-je obtenir cela et comment puis-je résoudre ce problème, donc je ne suis pas recevoir le message?

Merci d'avance!

Niklas

Répondre

4

Je suppose que le compilateur voit qu'il ya un chemin de code qui renvoie une valeur non initialisée et vous donne les nouvelles: tempCol est une valeur non initialisée à moins level est autre chose que 4,5,6 ou 7. Si vous êtes sûr que level ne sera jamais plus grand que 4,5,6 ou 7 alors ajoutez un else { return 0; } à la fin de votre if-ladder. PS: Vous devez utiliser une instruction switch(){} si vous devez comparer avec une série de valeurs constantes, cela est souvent plus rapide et plus facile à maintenir (IMHO). Vous pouvez également placer les valeurs RGBA dans un tableau que vous indexez avec level.

(Avertissement: Je ne fais pas Objective-C Personne ne devrait le faire)

+0

Merci pour votre réponse. Je pense que la création d'un tableau et l'indexation avec les niveaux est une bonne solution et cela résout le problème si la raison est telle que vous l'avez expliquée, ce qu'elle devrait être. P.S. Eh bien, si vous voulez développer pour iPhone, je suppose que Objective-C est la seule option D.S./Niklas (normalement un Java-guy ...). – Nicsoft

+4

Objective-C est un langage merveilleux :) Je ne suis pas d'accord avec votre déni de responsabilité. –

Questions connexes