Таймер обратного отсчета в какао

Мне интересно, есть ли способ создать таймер обратного отсчета с заданного времени. Например, скажем, я хочу, чтобы этот таймер длился час. Будет NSTextField, который покажет оставшееся время (например, 25 минут) и будет автоматически обновляться каждую минуту до нового значения. И затем, когда час, наконец, пройдет, он запустит какую-то функцию. Я видел, как люди предлагали для этого NSTimer и NSDate, но мне интересно, что вы все могли бы предложить.

Спасибо!

EDIT: Мой текущий код (timeInstance — это переменная экземпляра):

- (void)awakeFromNib:
{
timeInstance = [[NSDate date] addTimeInterval:(10 * 60)];
[timeInstance retain];

[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timer:) userInfo:NULL repeats:YES];
}

- (void)timer:(NSTimer *)myTimer
{
NSDate *now = [NSDate date];
// Compare
}

person PF1    schedule 21.08.2009    source источник


Ответы (1)


NSTimer и NSDate звучат вполне разумно.

РЕДАКТИРОВАТЬ: В качестве примечания, было бы неплохо увеличить частоту по мере приближения целевого времени; позволяя вам переключаться с отображения часов на отображение минут и отображение секунд.

person Williham Totland    schedule 21.08.2009
comment
У вас есть какие-нибудь ссылки, которые могли бы описать, как создать эффект обратного отсчета? Кажется, что большинство людей просто говорят о подсчете. - person PF1; 21.08.2009
comment
Считать вниз так же, как считать вверх. Вы берете разницу между целевой датой и текущей датой. - person Williham Totland; 22.08.2009
comment
Не могли бы вы взглянуть на мой код (в основном посте)... Я просто не могу понять, что делать дальше. - person PF1; 22.08.2009
comment
Далее вы сделаете именно то, что, как вы сказали, хотите сделать: введите оставшееся время в поле и проверьте, закончился ли обратный отсчет, и сделайте то, чего вы ждали, если он закончился. - person Peter Hosey; 22.08.2009
comment
Привет, Питер. Моя проблема в том, что я не знаю, как найти промежуток времени между ними. Знание ответа на этот вопрос позволит мне ввести время в поле и проверить, меньше ли оно 0 минут. - person PF1; 22.08.2009
comment
Это особенность NSDate. См. документацию: developer.apple.com/documentation/Cocoa/Reference /Фонд/ - person Peter Hosey; 22.08.2009