Получатель в выражении является мусорной ценностью - PullRequest
1 голос
/ 30 июля 2010

Я занимаюсь разработкой приложения для iPhone и использую xCode для «Построить и проанализировать».Я получаю сообщение «Receiver in expresseion - это мусорное значение», указывающее на строку строки возврата в моем боде ниже:

-(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];
}

Как я получаю это и как мне это исправить, чтобы я нене понял сообщение?

Заранее спасибо!

Никлас

1 Ответ

4 голосов
/ 30 июля 2010

Я предполагаю, что компилятор видит, что есть путь к коду, который возвращает неинициализированное значение, и выдает вам новость: tempCol - неинициализированное значение, если level - это что-то еще, чем 4,5,6 или 7 Если вы уверены, что level никогда не будет больше, чем 4,5,6 или 7, то добавьте else { return 0; } в конец своей if-лестницы.

PS: Вы должны использовать оператор switch(){}, если вам нужно сравнивать с серией постоянных значений, это часто быстрее и легче поддерживать (ИМХО). Кроме того, вы можете поместить значения RGBA в массив, который вы индексируете с помощью level.

(Отказ от ответственности: я не делаю Objective-C. Никто не должен делать это)

...