2011-02-10 4 views
0

Почему следующий сбой моего кода?NSTimer Crashes Application

NSTimeInterval TimeLeft = [NSDate timeIntervalSinceDate: [[NSUserDefaults standardUserDefaults] objectForKey: @ "lastDate"]] [[[таймер USERINFO] objectForKey: @ "theLabel"] текст: [NSString stringWithFormat: @ «Осталось время:% d», waitTime]]; // Настройте текст ярлыка

Я могу утверждать, что нет никаких проблем с переменными. userInfo - это словарь, который передается через NSTimer.

Спасибо!

+2

Пожалуйста, отформатируйте свой код. это почти нечитаемо, и вам не хватает точек с запятой и скобок. –

+2

Вам также не хватает журнала сбоев, кода, который устанавливает таймер, и любой информации о том, как хранятся различные ссылки на объекты; переменные экземпляра? Глобал? Localst? – bbum

+0

Возможно, это то, что вы пытаетесь сделать (предполагая, что все переменные существуют и настроены как ожидалось): '[[timer userInfo] setValue: [NSString stringWithFormat: @" Time Remaining:% d ", waitTime] forKey: @ "theLabel"]; ' – Rog

ответ

2

Предполагая, что вы вставили код точно, эта строка кода, безусловно, бросить исключение:

[[[timer userInfo] objectForKey:@"theLabel"] text:[NSString stringWithFormat:@"Time Remaining: %d", waitTime]]; 

Вы пытаетесь вызвать метод -text: на какой-либо объект, который предположительно UILabel. Но такого метода нет. Компилятор должен предупредить вас о том, что он не знает ни одного селектора, называемого -text:. Вместо этого вы почти наверняка хотите -setText:.

Вы также ссылаетесь на переменную с именем waitTime, но в предыдущей строке была создана одна из них: timeLeft. Предполагая, что вы действительно хотели ссылаться на timeLeft, у вас есть еще одна проблема: timeLeft является двойным, но вы печатаете его как целое. Если вам требуется целое число секунд, вы должны попробовать сделать маркер формата %.0f и сделать аргумент roundf(timeLeft).

Смежные вопросы