2016-02-18 2 views
2

Как разместить сообщение NSNotification с задержкой.NSNotification с задержкой

Одно решение, которое у меня на уме: - сообщение в performSelectorAfterDelay метод. Есть ли лучшее решение для этого.

Возможно, это NSNotificationQueue?

+0

см. Эту ссылку может помочь вам http://stackoverflow.com/questions/17171352/calling-method-with-delay-in-main-thread –

ответ

8

Использовать метод GCD dispatch_after(). В Objective-C, это будет выглядеть так:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [[NSNotificationCenter defaultCenter] postNotification:someNotification]; 
}); 

Обновление: Swift 3

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(5)) { 
    NotificationCenter.default.post(someNotification) 
} 
+0

Справа. Мы должны использовать GCD в быстром, а не в исполненииSelector. Спасибо за совет. – pkc456

0

Вы также можете использовать NSLocalNotification и установить fireDate. Основное отличие заключается в том, что при использовании NSLocalNotification пользователь увидит уведомление, когда приложение находится в фоновом режиме (например, это RemoteNotification).

Это может быть полезно, если вы являетесь напоминанием или напоминанием.

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