我刚刚遇到了一个我想分享的问题。在我的 iOS 日历使用中,我在应用程序委托(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?
我假设这是真的。如果在调用应用程序委托(delegate) applicationDidBecomeActive 方法之前调用我的方法(在应用程序委托(delegate)之外),这对我来说似乎很不寻常。
最佳答案
我的假设是不正确的。 requestAccessToEntityType:
回调可以在应用委托(delegate) applicationDidBecomeActive:
方法被调用之前执行。我刚刚在我的代码中观察到了这一点。我不是 100% 确定这是否总是执行顺序。
在进一步考虑之后,我现在开始编写代码,这样我就不会依赖于调用的顺序,也不会依赖于 requestAccessToEntityType: 时是否调用了
被调用。这种行为(applicationDidBecomeActive:
: applicationDidBecomeActive:
在 requestAccessToEntityType:
被调用时被调用)似乎不是由 Apple 指定的,并且可能会改变。
关于ios - 关于 requestAccessToEntityType,什么时候调用 applicationDidBecomeActive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749596/