NSNotification延迟

时间:2016-02-18 06:43:08

标签: ios swift ios9 nsnotificationcenter

如何延迟发布NSNotification

我想到的一个解决方案: - 在performSelectorAfterDelay方法中发布通知。有没有更好的解决方案。

NSNotificationQueue可以帮助我实现这个目标吗?

2 个答案:

答案 0 :(得分:10)

使用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)
}

答案 1 :(得分:0)

您还可以使用NSLocalNotification并设置fireDate。 主要区别在于使用NSLocalNotification,用户将在应用程序处于后台时看到通知(就像它是RemoteNotification)。

如果您通知是提醒或那种事情,那么它可能很有用。