removeObserver no funciona

Tengo el siguiente código:

@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

Así que puse puntos de interrupción en principio deviewDidLoad método, enviewDidDisappear. Cuando lanzo la aplicación que primero voy aviewDidload, despues de descargarlo es ir aviewDidDisappear.

Pero durante mi aplicación de nuevo descargo datos y publiconotification: NSDownloadComplete. Y en este VC es un trabajo, pero lo eliminé más tarde usando:

[[NSNotificationCenter defaultCenter] removeObserver:self]

Este uso VCviewDidLoad Una vez en el principio y no puede volver a agregarObserver.

¿Qué está mal?

EDITAR Intento poner el método addObserver enviewWillAppear oviewWillDisappear - no hay resultados. añadoNSLog(@"addObserver"); antes de

 [[NSNotificationCenter defaultCenter] addObserverForName...

en viewDidLoad

y escribe

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

En el registro veo:

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

¿Qué equivocado?

Editar 2 puede ver que el observador debe eliminarse pero nuevamente ejecuta el bloque en el método addObserver

Respuestas a la pregunta(3)

Su respuesta a la pregunta