gpt4 book ai didi

ios - 保存 80 个事件后收到内存警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:45 25 4
gpt4 key购买 nike

- (void)syncWithCalendar
{

NSMutableDictionary *dictionary = [util readPListData];
NSMutableArray *courses = [util getCourses];
__block NSMutableArray *lessons;
__block NSMutableDictionary *lesson;
NSString *studentID = [util getProgramDetails].studentId;
NSString *programName = [util getProgramDetails].programName;

__block NSString *startDateString = @"", *endDateString = @"";

NSDateFormatter *formatter;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
[formatter setDateFormat:@"MM/dd/yyyy"];

NSString *currentDateString = [NSString stringWithFormat:@"%@ 09:00:00", [formatter stringFromDate:[NSDate date]]];
[formatter setDateFormat:@"MM/dd/yyyy HH:mm:ss"];

NSDate *currentDate = [formatter dateFromString:currentDateString];

self.eventstore = [[EKEventStore alloc] init];

[self.eventstore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if (granted) {

NSLog(@"calendar access granted");

for (int i=0; i<[courses count]; i++)
{
lessons = [[courses objectAtIndex:i] objectForKey:@"lessons"];
for (int j=0; j<[lessons count]; j++)
{
lesson = [lessons objectAtIndex:j];
NSString *title = nil;
title = [NSString stringWithFormat:@"%@ %@-Complete %@ lesson",studentID,programName,[lesson objectForKey:@"lesson-name"]];

startDateString = [NSString stringWithFormat:@"%@ %@", [lesson objectForKey:@"exam-date"], @"09:00:00"];
endDateString = [NSString stringWithFormat:@"%@ %@", [lesson objectForKey:@"exam-date"], @"18:00:00"];

if (!([startDateString isEqualToString:@""] && [endDateString isEqualToString:@""]))
{
EKEvent *event = [EKEvent eventWithEventStore:self.eventstore];
event.title=title;
event.startDate = [formatter dateFromString:startDateString];
event.endDate = [formatter dateFromString:endDateString];

event.allDay = NO;

[event setCalendar:[self.eventstore defaultCalendarForNewEvents]];


NSError *err = nil;
[self.eventstore saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
//[self.eventstore saveEvent:event span:EKSpanThisEvent error:&err];
if (err) {
NSLog(@"event not saved .. error = %@",err);
} else {
NSLog(@"event added successfully");
}
}
} // lessons for loop
} // courses for loop

} else {
NSLog(@"Access not granted");
}
}];

[self.eventstore release];
[formatter release];
}

成功添加事件后显示:

"Received Memory Warning. Terminating in response to SpringBoard's termination"

然后应用终止。这发生在 iOS 7 设备中。我还没有在 iOS 6 及以下版本中检查过它。如果只保存了几个事件(30 个或更少),代码工作正常,但在保存 80 个或更多事件时显示内存问题。

最佳答案

我终于找到了问题的答案。我想分享我的解决方案,以便它可以帮助其他人....

我在 iOS 7 中特别遇到崩溃,这是因为下面这行

//错误
[self.eventstore saveEvent:event span:EKSpanThisEvent commit:YES error:&err];

保存事件的正确方法:(注意:我的案例不需要事件标识符)
//正确
[self.eventstore saveEvent:event span:EKSpanThisEvent commit:NO er​​ror:&err];然后使用[self.eventstore 提交:NULL]

保存所有事件后。这阻止了我的崩溃。

关于ios - 保存 80 个事件后收到内存警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com