2015-10-15 1 views
-2

СЦЕНАРИЙ Я работаю над приложением, которое должно запускать метод через 5 секунд после нажатия кнопки.iOS: Запустите NSTimer через 5 секунд

КОД Это код, который, как предполагается засчитывать метод controlTimerExpire через 5 секунд

NSDate *fiveSecondsFromNow = [[NSDate date] dateByAddingTimeInterval:5.0f]; 
    NSTimeInterval timeInterval = [fiveSecondsFromNow timeIntervalSinceNow]; 

controlTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO]; 

// I ALSO TRIED THIS; HARDCODING IT LIKE BELOW 

controlTimer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO]; 

ВОПРОСcontrolTimerExpire уволят сразу же после того, как кнопка прослушиваются. Между нажатием кнопки и стрелкой controlTimerExpire должно быть 5 секунд.

ВОПРОС Почему этот укол немедленно и не срабатывает через 5 секунд?

ССЫЛКИ То, что я сделал выше, это то, о чем говорят эти ссылки ниже, но это не дает того же результата, что и в ссылках. ЗАЧЕМ?

Set an NSTimer to fire once in the future

How to call a method every x seconds in Objective-C using NSTimer?

+0

Я заслуживаю того, чтобы мой вопрос был отклонен. Извините за смешение ребят. –

+0

BTW. Для этого было бы гораздо проще использовать 'dispatch_after'. Не требуется таймер. Никакого дополнительного метода не требуется. – rmaddy

+0

Не пробовал, но это звучит многообещающе. Спасибо @rmaddy! Вы - бог среди людей. –

ответ

2

Вопрос действительно был еще ниже в моем коде, который я вызывал [controlTimer fire];. Это было оставлено, потому что я пытался заставить его работать, и я оставил его там по ошибке. Упс, просто потраченный впустую полчаса. Так что для вас, ребята, которые могут быть одного и того же вопроса, все, что вам нужно, это установить

[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(controlTimerExpire) userInfo:nil repeats:NO];

и вам не нужно явно вызывать fire, потому что scheduled часть scheduledTimerWithTimeInterval будет срабатывать переключатель для вы основываетесь на установленном временном интервале.

3

Весь ваш расчет NSDate является неправильным и ненужным. NSTimer занимает несколько секунд. Если вы хотите стрелять через 5 секунд, просто пройдите 5.

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

  • Нет связанных вопросов^_^