NSNotificationCenter никогда не выполняется - PullRequest
0 голосов
/ 09 апреля 2019

Это мой код.

Здесь создайте наблюдателя для уведомления под названием Example в ViewController

- (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 голосов
/ 10 апреля 2019

Я полагаю, что проблема, с которой вы столкнулись, может быть связана с тем, что в вашем втором контроллере представления вы передаете self.dictKeys в параметре object.Если вы хотите передать данные через NSNotificationCenter, вам следует использовать параметр userInfo.

Пример Даршана делает это правильно.

0 голосов
/ 09 апреля 2019

Создал демо для 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"}];
}
...