我使用最新的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;
}