ios - 保存超过100个ekevent后,应用程序崩溃且Iphone重新启动

标签 ios objective-c ekevent

我正在处理Ekevents,添加100多个事件后,我的应用程序崩溃了,并且Iphone重新启动,当应用程序崩溃时出现此错误消息“接收到内存警告,以响应SpringBoard的终止而终止”

for (int i=0; i<120; i++) {

    NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
    dayComponent.day = 7*incrementedWeek;
    incrementedWeek++;
    NSCalendar *theCalendar = [NSCalendar currentCalendar];

    NSDate* dateIncrementByWeek = [theCalendar dateByAddingComponents:dayComponent toDate:dateToBeIncremented options:0];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];

        NSDate* dateIncrementByWeek = [theCalendar dateByAddingComponents:dayComponent toDate:dateToBeIncrementedWeekDay1 options:0];
        NSCalendar *calendar1 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        NSDateComponents *components = [calendar1 components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:dateIncrementByWeek];
        [components setHour:17];
        [components setMinute:30];
        NSDate *date1 = [calendar1 dateFromComponents:components];
        [components setHour:20];
        [components setMinute:30];
        NSDate *date2 = [calendar1 dateFromComponents:components];
 NSDate *date22 = [calendar1 dateFromComponents:components];

        EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:-3600.0f];
        [event addAlarm:alarm];
        event.calendar = calendar;
        event.title = @"title";

        // set the start date to the current date/time and the event duration to two hours
        //  NSDate *startDate = eventDate;
        event.startDate = date1;
        event.endDate = date2;

 //NSLog(@"optianl date1 %@",date1);
 //NSLog(@"optianl date2 %@",date2);
        NSError *error = nil;
        // save event to the callendar
        BOOL result = [eventStore saveEvent:event span:EKSpanThisEvent commit:NO error:&error];
 [eventStore commit:NULL];

        if (result) {
              NSLog(@"Event created");
        } else {
             NSLog(@"Event created");


        }

最佳答案

即使是我也遇到了同样的问题,后来发现我要添加64个以上的通知,因此重新加载时发生崩溃。

因此,取消所有本地通知后,最多添加64条通知,它应该可以正常工作。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html

关于ios - 保存超过100个ekevent后,应用程序崩溃且Iphone重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940270/

相关文章:

ios - 旋转图像缩小我的图像

ios - glGetAttribLocation 与 glBindAttribLocation

c++ - 将浮点值从 Objective-C 传递到 C++ 方法

ios - 几秒钟后关闭 UIAlertController?

iphone - 调用 "Could not load source: 6"时收到 "pushViewController"控制台消息??? (附代码)

ekevent - 如何获得ekevent EKparticipant电子邮件?

objective-c - iPad 应用程序因 NSInvalidArgumentException 而崩溃

objective-c - ARC 适用于所有对象?

objective-c - 跨工作区使用通用权限帮助工具 - SMJobBless

ios - 如何识别 EKEvent 的 EKParticipationStatus 是否为挂起(尚未接受)?