我的Cordova应用程序在连续64次调用findEvent

时间:2015-09-27 14:19:15

标签: ios iphone cordova cordova-plugins

我使用最新的iOS(9),Xcode(7A220)和Cordova(5.3.1)版本刷新了我的应用程序。我正在使用Eddy Verbruggen的Calendar插件,如果只是一次调用就可以正常工作,但...... 我的应用程序中有一个页面显示事件列表 - 它现在有77个事件。每次活动,我都会提供一个“添加到日历”的链接。或者'从日历中删除,取决于事件是否在日历中。填充列表的主要html(没有那些添加/删除链接)后,我通过另一个循环(因为javascript编程的异步性质)在每个上调用findEvent然后通过javascript添加到每个事件列表的相应链接。这在过去的几年里一直很好用,但是当我现在尝试它时,它会在第64次调用时一直冻结而没有错误。如果我将它限制为63个电话,那么它可以完美运行。但是一旦我进行了第64次调用,成功的回调函数就不会触发。它似乎与iPhone 6或模拟iPhone上的行为相同。是否有某种调用堆栈我可能会运行?它似乎在冻结时使用42MB,几乎就像在真正的iPhone上限制为42,但在仿真中它使用更多的内存。我没有错误......

我尝试通过在ObjC中使用裸骨findEvent调用来消除由选项数组的开销引起的可能问题:(但我有相同的行为)

- (NSArray*) findEKEventsWithTitleAndDate: (NSString *)title
                       startDate: (NSDate *)startDate
                         endDate: (NSDate *)endDate {

  if (title != (id)[NSNull null] && title.length > 0) {
    title = [title stringByReplacingOccurrencesOfString:@"'"withString:@"\\'"];
  }

  NSString *predicateString = [NSString stringWithFormat:@"title contains[c] '%@'", title];

  NSPredicate *matches;
  NSArray  *datedEvents, *matchingEvents;

  if (predicateString.length > 0) {
    matches = [NSPredicate predicateWithFormat:predicateString];

    datedEvents = [self.eventStore eventsMatchingPredicate:[eventStore     predicateForEventsWithStartDate:startDate endDate:endDate calendars:nil]];

    matchingEvents = [datedEvents filteredArrayUsingPredicate:matches];
  } else {

    datedEvents = [self.eventStore eventsMatchingPredicate:[eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:nil]];

    matchingEvents = datedEvents;
  }

  return matchingEvents;
}

0 个答案:

没有答案