Nie można wywoływać kontrolera widoku, gdy używana jest metoda bloku kodu NSNotificationCenter z ARC
Kiedy używam-addObserverForName: object: queue: usingBlock:
dlaNSNotificationCenter
w-viewDidLoad:
metoda mojego kontrolera widoku-dealloc
metoda kończy się niepowodzeniem.
(Po usunięciu-addObserverForName: object: queue: usingBlock:
, -dealloc
jest ponownie wywoływany.)
Za pomocą-addObserver: selector: name: object:
wydaje się, że nie ma tego problemu. Co ja robię źle? (Mój projekt używa ARC.)
Poniżej znajduje się przykład mojej implementacji, na wypadek, gdy zrobię coś źle tutaj:
[[NSNotificationCenter defaultCenter] addObserverForName:@"Update result"
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
updateResult = YES;
}];
Z góry dziękuję za wszelką pomoc.
Próbowałem dodać następujące (bezskutecznie):
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if ([self isMovingFromParentViewController]) {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
}