Удалить 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;