2013-12-22 37 views
1

FirstController.mNSNotification消息

- (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

看起来好像你在'addObserver'调用中混淆了选择器和名称。这是你真正的代码吗? - 观察员在哪里被删除? –

+0

“如果操作执行一次,在控制台中我会看到一条消息”:我在这里看不到您的问题,这正是预期的行为。您发送一个通知,每个观察者收到一个通知。你发两个,你收到两个。你准确的问题是什么? – auco

回答

2

你每天是如此自然,你得到的只是尽可能多的通知

你已经忘记了要执行的操作时间发布通知(或不显示;)),以removeObserver调用所以通知可能“堆起来'(每个活VC都会收到通知)