在以下代码中,我检查当前任务(正在编辑的任务)是否有一个本地通知。如果有的话,我会尝试取消该通知。然后(如果fireDate还没有过去),我会更新通知的alertBody,并重新安排它。
问题是,如果我创建了一个通知然后进行编辑,最终会有两个通知被触发。某种方式原始通知没有被取消...
问题是,如果我创建了一个通知然后进行编辑,最终会有两个通知被触发。某种方式原始通知没有被取消...
if ([currentTask localNotification])
{
[[UIApplication sharedApplication] cancelLocalNotification:[currentTask localNotification]];
if ([[NSDate date] compare:[currentTask localNotification].fireDate] == NSOrderedAscending)
{
NSLog(@"current task name: %@", [currentTask name]);
NSString *temp = [NSString stringWithFormat:@"Alert:\n%@", [currentTask name]];
[[currentTask localNotification] setAlertBody:temp];
[[UIApplication sharedApplication] scheduleLocalNotification:[currentTask localNotification]];
}
else
[currentTask setLocalNotification:nil];
}
这里有什么问题的见解吗?
我知道在计划通知时会复制一份 - cancelLocalNotification是如何找到正确的副本的呢?它是通过测试属性是否相等来实现的吗?还是它会复制指针地址并进行匹配?换句话说,如果其中一个属性被更改,cancelLocalNotification是否无法将其与最初计划的通知匹配?