【问题标题】:EventKit - App freezes when adding an EKEvent with 2 alarms (iOS 5)EventKit - 添加带有 2 个警报的 EKEvent 时应用程序冻结(iOS 5)
【发布时间】:2011-10-21 02:39:32
【问题描述】:

我有一个应用程序以编程方式将提醒添加到您的 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 两次就可以了。

我做错了吗?

【问题讨论】:

  • 仅供参考,我已经向 Apple 提交了一个错误;当我听到更多消息时会更新这篇文章。
  • 是的 - 它已在 5.1b2 中修复。我已经在朋友的设备上确认了这一点。

标签: iphone objective-c ios eventkit


【解决方案1】:

这是苹果的一个错误。如果您设置 2 个警报,则会导致应用程序冻结。如果你只设置 1 它工作得很好。这已在 iOS 5.1 中修复。

【讨论】:

    【解决方案2】:

    如果您查看 iOS 5 从 iOS 4.3 document 的更改中的 EventKit 部分,它会提到某些项目已被 EKEvent 弃用。层次结构发生了变化,并添加了一个新的抽象超类:EKCalendarItem

    【讨论】:

    • 他想做的事情应该仍然有效。与警报相关的方法刚刚移至 EKCalendarItem。没有任何与警报相关的内容被删除或弃用。
    • 没错。我没有尝试使用新的类层次结构作为“解决方法”。如果我向 Apple 提交的错误报告没有得到支持,我会试一试并告诉你会发生什么。
    【解决方案3】:

    您是否尝试过使用变量调用 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];
    

    【讨论】:

      【解决方案4】:

      我有同样的错误。

      问题似乎是 startDate 不应该与 endDate 相同......真是愚蠢的 iOS 变化!

      【讨论】:

      • 我也遇到了这个问题,但即使修复了这个问题,我也可以添加一个带有一个警报的日历项目,但如果我添加了两个警报,它就会冻结。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      相关资源
      最近更新 更多