¿Por qué no jugará mi MPMoviePlayerController?

Estoy tratando de get un file de video .mov básico para jugar usando el código a continuación, pero cuando se presiona el button que he asignado a la acción, lo único que aparece es el marco negro, pero no se reproduce ningún video. Cualquier ayuda es apreciada. Gracias.

@implementation SRViewController -(IBAction)playMovie{ NSString *url = [[NSBundle mainBundle] pathForResource:@"OntheTitle" ofType:@"mov"]; MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath:url]]; // Play Partial Screen player.view.frame = CGRectMake(10, 10, 720, 480); [self.view addSubview:player.view]; // Play Movie [player play]; } @end 

Asunción previa: su proyecto está utilizando ARC .

Su instancia de MPMoviePlayerController es local solamente y ARC no tiene forma de decirle que necesita retener esa instancia. Como el controller no retiene su vista, el resultado es que su instancia de MPMoviePlayerController se liberará directamente después de la ejecución de su ejecución de método playMovie .

Para solucionar ese problema, simplemente agregue una propiedad para la instancia de jugador a su class SRViewController y asigne la instancia a esa propiedad.

Encabezamiento:

 @instance SRViewController [...] @property (nonatomic,strong) MPMoviePlayerController *player; [...] @end 

Implementación:

 @implementation SRViewController [...] -(IBAction)playMovie { NSString *url = [[NSBundle mainBundle] pathForResource:@"OntheTitle" ofType:@"mov"]; self.player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath:url]]; // Play Partial Screen self.player.view.frame = CGRectMake(10, 10, 720, 480); [self.view addSubview:self.player.view]; // Play Movie [self.player play]; } [...] @end