永远不会执行NSNotificationCenter

时间:2019-04-09 03:28:05

标签: ios objective-c nsnotificationcenter

这是我的代码。

在ViewController中创建名为Example的Notification的观察者

- (void)addObserverExample
{
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(example:)
                                             name:@"Example"
                                           object:nil];
}


- (void)example:(NSNotification *)notification{
   NSLog(@"Example!!!");
}

viewDidLoad注册我的观察者

- (void)viewDidLoad
{
  [self addObserverExample];
}

在我的第二个ViewController中。点击按钮执行此代码:

[[NSNotificationCenter defaultCenter] postNotificationName:@"Example" object:self.dictKeys userInfo:nil];

我的问题是通知从未执行。

任何想法。

2 个答案:

答案 0 :(得分:0)

已根据您的问题为NSNotificationCenter创建了演示程序,对我来说效果很好。这是该代码的链接:NSNotificationCenter Demo

- (void)viewDidLoad {
    [super viewDidLoad];

    [self addObserverExample];
}

- (void)addObserverExample
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(example:)
                                                 name:@"Example"
                                               object:nil];
}

- (void)example:(NSNotification *)notification{
    NSLog(@"Example!!!");
    NSLog(@"%@",notification.userInfo);
}

- (IBAction)btnFireNotification:(id)sender {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Example" object:nil userInfo:@{@"key" : @"value"}];
}

答案 1 :(得分:0)

我相信您遇到的问题可能与以下事实有关:在第二个视图控制器中,您正在self.dictKeys参数中传递object。 如果要通过NSNotificationCenter传递数据,则应改用userInfo参数。

Darshan的例子可以正确地做到这一点。