AVPlayer quitando un periodicTimeObserver

Tengo dificultades para detener a un observador de AVPlayers.

Tengo un reproductor de AVPlayer corriendo así:

player = [[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:path]]; 

luego agrego un observador

  [player addPeriodicTimeObserverForInterval:CMTimeMake(3, 10) queue:NULL usingBlock:^(CMTime time){ NSTimeInterval seconds = CMTimeGetSeconds(time); NSLog(@"observer called"); for (NSDictionary *item in robotR33) { NSNumber *time = item[@"time"]; if ( seconds > [time doubleValue] && [time doubleValue] >= [lastTime doubleValue] ) { // NSLog(@"LastTime: %qi", [lastTime longLongValue]); lastTime = @(seconds); NSString *str = item[@"line"]; [weakSelf nextLine:str]; // NSLog(@"item: %qi", [time longLongValue]); // NSLog(@"Seconds: %f", seconds) }; } }]; [player play]; 

Una vez que termine con el jugador hago esto:

 [player pause]; [player removeTimeObserver:self.timeObserver] player = nil; 

Lo extraño es cuando pongo un punto de interrupción en el código y paso por el código usando XCode funciona. Puedo ver que el bloque deja de imprimir "código de observador"

Pero cuando ejecuto el código normalmente sin puntos de interrupción, puedo ver que el observador todavía se está ejecutando en el mismo intervalo después de que se ha llamado a [player removeTimeObserver].

¿Algunas ideas?

    Me alegro de ver a los débiles Trabaja por ti mismo …

    En lo anterior, no te veo asignando el resultado de

      [player addPeriodicTimeObserverForInterval ... 

    a self.timeObserver puede ser un error tipográfico, pero debería ser;

      self.timeObserver = [player addPeriodicTimeObserverForInterval ... 

    si tiene la intención de llamar

      [player removeTimeObserver:self.timeObserver]; 

    También te perdiste el ";" encima.