EventKit – 当添加2个警报(iOS 5)的EKEvent时,应用程序冻结

我有一个应用程序,以编程方式添加提醒到您的iOS设备的日历。

在iOS 5之前,我可以添加一个带有两个闹钟的日历项目:

EKEventStore* eventStore = [[EKEventStore alloc] init]; EKEvent* event = [EKEvent eventWithEventStore:eventStore]; // set startDate, endDate, title, location, etc. [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min [event setCalendar:[eventStore defaultCalendarForNewEvents]]; NSError* error = nil; BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&error]; 

在iOS 5上,这会冻结应用程序 。 它不会返回一个错误 – 它永远不会返回。

如果我只调用addAlarm一次,它按预期工作。

在iOS 4.2上,调用addAlarm两次就可以正常工作。

难道我做错了什么?

它是一个苹果的错误。 如果您设置了2个闹钟,则会导致应用程序冻结。 如果你只设置1它工作得很好。 这在iOS 5.1中得到了解决。

如果您查看iOS 4.3 文档中的iOS 5更改中的EventKit部分,则会提到EKEvent中不推荐使用某些项目。 层次已经改变,并添加了一个新的抽象超类: EKCalendarItem 。

你有没有尝试使用variables调用addAlarm?

 EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min [event addAlarm:alarm]; EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min [event addAlarm:alarm2]; 

我有同样的错误。

问题似乎startDate不应该像endDate一样 …真的很愚蠢的iOS更改!