NSNotification消息

时间:2013-12-22 07:54:34

标签: iphone objective-c nsnotification

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");

}

如果操作执行一次,在控制台中我会看到一条消息。如果动作执行了两次,在控制台中我会看到另外两个。如果动作执行了三次,在控制台中我会看到另外三个。为什么会这样?我在程序的其他部分使用相同的代码,并且始终只有一条消息。

1 个答案:

答案 0 :(得分:2)

每次执行操作时都会发布通知,因此您自然会获得尽可能多的通知

BUT

您已经忘记(或未显示;))调用removeObserver,因此通知可能会“堆积”(每个活着的VC都会收到通知)