我在我的中设置了“应用程序不在后台运行” info.plist
,所以当用户点击主页按钮时,应用程序退出。
当我 [UIApplication -appWillTerminate:]
打电话时,我会安排 64 个本地通知到系统,所有这些都是非重复的。
但这在装有 iOS6.0.1 的 iPhone4 上似乎需要很长时间(6.17 秒)。当我查看时间分析器时,我发现曲线很奇怪,它不会占用太多 CPU 时间,但确实需要很多时间。
此外,当我查看调用树时,93% 的时间都花在[UIApplication -scheduleLocalNotification:]
了图像中显示的时间范围内。为什么?
这就是我生成通知的方式:
UILocalNotification *n = [[[UILocalNotification] alloc] init] autorelease];
n.alertBody = @"some body";
n.hasAction = YES;
n.alertAction = @"some action";
n.fireDate = @"some date";
n.repeatInterval = 0;
n.soundName = @"my sound"
n.userInfo = aDictionaryWithAStringAbount10CharacterLongAnd2NSNumber.
[self.notifications addObject:n];
这是我安排通知的方式:
-(void)endProxyAndWriteToSystemLocalNotification
{
_proxying = NO;
NSDate *dateAnchor = [NSDate date];
NSEnumerator *enumerator = [self.notifications objectEnumerator];
NSInteger i = 0;
while (i < maxLocalNotifCount) {
UILocalNotification *n = [enumerator nextObject];
if (!d) {
break;
}
if ([n.fireDate timeIntervalSinceDate:dateAnchor] >= 0) {
[[UIApplication sharedApplication] scheduleLocalNotification:n];
i++;
}
}
[self.notificationDatas removeAllObjects];
}