什么时候关于requestAccessToEntityType调用applicationDidBecomeActive?

时间:2014-09-09 16:22:55

标签: ios calendar eventkit ekeventstore

我刚遇到了一个我认为我会分享的问题。在我的iOS日历使用中,我在app delegate中使用applicationDidBecomeActive来检查用户日历设置是否已更改。具体来说,在获取applicationDidBecomeActive回调之后,我执行以下操作:

// self.eventStore is of type EKEventStore *
EKCalendar *cal = [self.eventStore calendarWithIdentifier: calendarIdentifier];
if (!cal) {
    // Assume we no longer have access to the users calendar; e.g., they have change their privacy settings.
}

然而,我遇到了一个问题。 (多么令人惊讶!:))。我发现当我们最初做requestAccessToEntityType时也会调用applicationDidBecomeActive。也就是说,在Apple向用户显示“警报”以询问用户是否希望我们的应用程序可以访问其日历之后,我们的应用程序会获得applicationDidBecomeActive回调。我唯一剩下的问题,现在我已经想到了:

当调用requestAccessToEntityType时,我们是否总是在调用requestAccessToEntityType的完成处理程序之前获取applicationDidBecomeActive

我认为这是真的。如果在调用app委托applicationDidBecomeActive方法之前调用了我的方法(在app委托之外),那对我来说似乎很不寻常。

1 个答案:

答案 0 :(得分:1)

我的假设不正确。在调用app delegate requestAccessToEntityType:方法之前,可以执行<{1}}回调。我刚刚在我的代码中发现了这一点。我不能100%确定这是否始终是执行的顺序。

在考虑了这一点之后,我现在要进行编码,这样我就不会依赖于这种来电排序,或者applicationDidBecomeActive:是否会调用applicationDidBecomeActive:叫做。似乎这种行为(调用requestAccessToEntityType:时调用applicationDidBecomeActive:)并未由Apple指定,并且可能会更改。