当最小化应用程序时,一切都很好,但是当我尝试部署繁荣时,这个错误 *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSArrayM insertObject:atIndex:]:object不能为nil'
-(void) applicationDidEnterBackground:(UIApplication *)application
{
NSDate *alertTime = [[NSDate date] dateByAddingTimeInterval:5];
UIApplication* app = [[UIApplication sharedApplication] init];
UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:kAllNews]];
NSError *error = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
NSError *jsonParsingError = nil;
sortArray = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonParsingError];
if (notifyAlarm)
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"news"])
{
newsNew = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"news"]];
}
if (newsNew.count > sortArray.count) {
notifyAlarm.fireDate = alertTime;
notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
notifyAlarm.repeatInterval = 0;
notifyAlarm.soundName = @"Glass.aiff";
notifyAlarm.alertAction = @"Gipoteza";
notifyAlarm.alertBody = @"Добавлена новая новость";
[app scheduleLocalNotification:notifyAlarm];
}
}
}
答案 0 :(得分:0)
一些建议:
首先;您是否尝试将代码放在applicationWillResignActive中?
为什么在代码中引用UIApplication?您已将其作为方法的参数...
尝试在代码中放置断点,以确切了解此错误发生的位置。我猜它会发生在最后一行:[app scheduleLocalNotification:notifyAlarm],并且它发生是因为你的notifyAlarm对象由于某种原因是nil。使用调试器逐步执行代码以查看该对象是否确实已设置。
也;请注意,您的代码在停用之前最多有5秒钟的时间。暂停时;没有代码可以运行。例如,如果由于某种原因您的NSURLConnection请求需要很长时间才能响应,那么您的应用将在代码完成之前暂停。