FirstController.m
- (IBAction)done:(id)sender {
NSNotification *msg = [NSNotification notificationWithName:@"addNevItem" object:[NSString stringWithFormat:@"%i",1]];
[[NSNotificationCenter defaultCenter] postNotification:msg];
}
TwoController.m
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(addNevItem:)
name:@"addNevItem"
object:nil];
}
-(void)addNevItem:(NSNotification *)notification {
NSLog(@"dd");
}
如果操作执行一次,在控制台中我会看到一条消息。如果动作执行了两次,在控制台中我会看到另外两个。如果动作执行了三次,在控制台中我会看到另外三个。为什么会这样?我在程序的其他部分使用相同的代码,并且始终只有一条消息。
答案 0 :(得分:2)
每次执行操作时都会发布通知,因此您自然会获得尽可能多的通知
BUT
您已经忘记(或未显示;))调用removeObserver,因此通知可能会“堆积”(每个活着的VC都会收到通知)