我在我的应用程序中使用EKEventStore。我获取默认存储,并注册EKEventStoreChangedNotification
,以便在更改日历时得到通知。但是,进行更改后,通知的发送方将被调用几次(5-10)次,有时每次调用之间的间隔可能长达15秒。这弄乱了我的代码,使工作变得更加困难。有什么我可以做的吗?
谢谢
iOS7编辑:似乎从iOS7版本开始,此问题就消失了。现在,无论对CalendarStore进行的更改如何,都只会发送一个EKEventStoreChangedNotification
。
最佳答案
这是由于通知的发送方式以及每个通知实际通知的内容的结果。以我的经验,您可以期望至少收到一个关于项目更改的通知(事件,提醒等),并且至少收到一个有关该项目包含日历的更改的通知。
在没有看到您的代码并知道正在进行哪些更改的情况下,我对答案不能太具体;但是,通常,您有两种选择。
后一种解决方案是我的首选答案,可能看起来像(暂时忽略线程问题):
@property (strong) NSTimer *handlerTimer;
- (void)handleNotification:(NSNotification *)note {
// This is the function that gets called on EKEventStoreChangedNotifications
[self.handlerTimer invalidate];
self.handlerTimer = [NSTimer timerWithTimeInterval:2.0
target:self
selector:@selector(respond)
userInfo:nil
repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:self.handlerTimer
forMode:NSDefaultRunLoopMode];
}
- (void)respond {
[self.handlerTimer invalidate];
NSLog(@"Here's where you actually respond to the event changes");
}
关于iphone - EKEventStoreChangedNotification被多次调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12205484/