【问题标题】:iOS7 device get restarted when using 'saveEvent:span:commit:error:' method使用“saveEvent:span:commit:error:”方法时,iOS7 设备会重新启动
【发布时间】:2013-10-21 18:49:35
【问题描述】:

我正在开发一个应用程序,它将约会记录从我的应用程序复制到设备本机日历。我正在使用以下代码来执行此操作。

NSString *eventIde = nil;

EKEventStore *eventStore = [[EKEventStore alloc] init];
EKCalendar *calendarDef = [eventStore defaultCalendarForNewEvents];
EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
[event setCalendar:calendarDef];

//set values to this event. like title, notes, startDate, endDate, location

NSError *err1 = nil;    
BOOL isStoredd = [eventStore saveEvent:event span:EKSpanThisEvent commit:YES error:&err1];

if(isStoredd){
       eventIde = [NSString stringWithString:event.eventIdentifier];  
}

在这里,我正在为我的应用程序中的每个约会创建 EKEvents,设置适当的值,并将事件保存到事件存储。这是同时为大约 200 条记录完成的。它在 iOS6 中运行良好,当我将 ipad 更新到 iOS7 时,它会导致设备重新启动。我对记录数 50 进行了同样的尝试,然后也出现了同样的问题。

有时它会显示内存过多问题,有时会显示“响应 SpringBoard 的终止而终止”。我需要将 eventIdentifier 输入我的数据库以供进一步使用。但每次出现此问题并重新启动设备时。

谁能帮我解决这个问题? iOS7 eventstore 有什么特别之处? 或者请提供解决此问题的任何解决方案。

谢谢

【问题讨论】:

  • 如果您按顺序运行导入,它是否有效?
  • 如果你禁用了 ARC 来追踪内存功能,也许可以通过跟随发布找到一些东西。
  • @RyanR - 我没有得到你 Ryan,你的意思是我的“按顺序导入”?上面的代码块适用于每条记录。我尝试批量更改,最后提交它们。但这将不允许访问 eventidentifier。
  • @StephenJ - 我没有使用 ARC。但我无法追踪任何东西。
  • 您说这是同时为大约 200 条记录完成的。同时意味着并发。那么,您是否尝试过连续执行它,或者甚至只测试一条记录?你是什​​么意思它不允许访问事件标识符?访问属性时不会收到内存通知。

标签: iphone ios7 ekeventstore


【解决方案1】:

Apple.com 上日历和提醒编程指南的第一部分有你的答案。

除非您有多个日历,例如 FB 活动,否则您不会多次分配商店。

我强烈推荐 Apple 的指南,它们通常比 3rd 方书籍更容易。

【讨论】:

  • 谢谢斯蒂芬,我通过在我的 appdelegate 方法中初始化 eventstore 来尝试这个,并为每条记录使用这个 eventstore。但问题仍然存在。所以现在我一次最多将 30 条记录复制到日历中。然后我设置了一个计时器,在 30 秒后复制接下来的 30 条记录。因此,我在几分钟内完成了将以上 200 条记录复制到日历中。这解决了我的问题。这是正确的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
相关资源
最近更新 更多