У меня есть виджет iOS, который использует EKEventStore
для работы с напоминаниями. Виджет инициализирует EKEventStore
только один раз, а затем использует этот экземпляр. Виджеты обычно создаются при просмотре в сегодняшнем viewController и уничтожаются, когда у пользователя есть центр уведомлений. Это приводит к инициализации EKEventStore
каждый раз, когда пользователь просматривает виджет. После 10 раз подряд просмотра виджета возникает следующая ошибка:
[EventKit] Client tried to open too many connections to calaccessd. Refusing to open another
Я диагностировал проблему и обнаружил, что это происходит после 10 просмотров виджета. Чтобы воспроизвести это, вам нужно открыть другое приложение, а затем каждый раз возвращаться к виджету, чтобы перезагрузить виджет при его просмотре.
Я правильно инициализирую EKEventStore
следующим образом:
self.eventStore = [[EKEventStore alloc] init];
[self.eventStore requestAccessToEntityType:EKEntityTypeReminder
completion:^(BOOL granted, NSError *error) {
}];
Я понимаю, что это может быть проблемой для инициализации EKEventStore
несколько раз в одном сеансе виджета. Но когда пользователь уходит из виджета, я ожидаю, что это ограниченное число раз инициализации EKEventStore
будет сброшено при перезагрузке виджета с самого начала.