removeObserver funktioniert nicht

Ich habe folgenden Code:

@implementation SplashViewVC

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.splashView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Default.png"]];
    self.activityIndicator.originY = 355.f;
    [[NSNotificationCenter defaultCenter] addObserverForName:NCDownloadComplete object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *n){
        NSInteger errorCode = [n.userInfo[@"errorCode"] integerValue];        
        [self.activityIndicator stopAnimating];
        if (errorCode == ERROR_CODE_NO_CONNECTION) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Some problem with server" delegate:self cancelButtonTitle:@"try again" otherButtonTitles:nil];
            [alertView show];
        } else if (errorCode == 0) {
            [self dismissViewControllerAnimated:YES completion:nil];
        }
    }];
    [self downloadData];
}

- (void)downloadData
{
    [self.activityIndicator startAnimating];
    [[Server sharedServer] getMovieData];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    [self downloadData];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super viewDidDisappear:animated];
}

@end

Also habe ich Anfang von Haltepunkte gesetztviewDidLoad Methode, inviewDidDisappear. Wenn ich die App starte, gehe ich zuerst zuviewDidload, nach dem Download geht es weiter zuviewDidDisappear.

Aber während meiner App lade ich wieder Daten herunter und postenotification: NSDownloadComplete. Und in dieser VC ist es Arbeit, aber ich entfernte später mit:

[[NSNotificationCenter defaultCenter] removeObserver:self]

Diese VC verwendenviewDidLoad einmal am anfang & kann nicht wieder addObserver.

Was ist falsch?

BEARBEITEN Ich versuche, addObserver Methode zu setzenviewWillAppear oderviewWillDisappear - keine Ergebnisse. ich füge hinzuNSLog(@"addObserver"); Vor

 [[NSNotificationCenter defaultCenter] addObserverForName...

in viewDidLoad

und schreibe

- (void)viewDidDisappear:(BOOL)animated
{
    NSLog(@"removeObserver");
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super viewDidDisappear:animated];
}

Im Log sehe ich:

2013-06-10 14:32:05.646 myApp[9390:c07] addObserver
2013-06-10 14:32:06.780 myApp[9390:c07] removeObserver

Was falsch

BEARBEITEN 2 Sie können sehen, dass der Observer entfernt werden muss, aber erneut block in der addObserver-Methode ausgeführt wird

Antworten auf die Frage(3)

Ihre Antwort auf die Frage