Удалить Observer при использовании addObserverForName: usingBlock

У меня есть следующий код, который добавляет наблюдателя в загрузку представления.

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserverForName:@"com.app.livedata.jsonupdated"
                                                      object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
                                                          NSLog(@"JSONUPDATED");
                                                      }];
}

И это прекрасно срабатывает. Однако, когда представление выгружено, и я подтверждаю, что dealloc называется уведомлением, все еще срабатывает.

Кажется, что не существует метода дезактивации этого наблюдателя?

Ответы

Ответ 1

Кажется, решение состоит в том, чтобы отслеживать объект в представлении, а затем вы можете ссылаться на него в методах dealloc.

 id observer = [[NSNotificationCenter defaultCenter] addObserverForName: /* ... */ ];

Затем удалите следующее:

[[NSNotificationCenter defaultCenter] removeObserver:observer];
observer = nil;