MPMoviePlayerController nie odtwarza żadnych treści wideo [ze względu na ARC i zarządzanie pamięcią]

Próbuję odtworzyć wideo w aplikacji iOS, używając MPMoviePlayerController do dołączenia widoku filmu do istniejącego widoku, gdy użytkownik naciska przycisk. Widok pojawia się jako czarna skrzynka na właściwej pozycji i wszystko, ale nic się nie dzieje. Spodziewam się, że film zacznie się odtwarzać, ale nic się nie dzieje i nie ma podpowiedzi z powodu dlaczego.

Czy ktoś może zobaczyć, gdzie to idzie źle?

-(IBAction) playButtonClicked:(id)sender
{
    NSString* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];
    NSLog(@"Using videoPath %@", path);
    NSURL* url = [NSURL fileURLWithPath:path];
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.view addSubview:player.view];
    player.view.frame = CGRectMake(10, 10, 300, 220);
   [player play];

}

Film istnieje i rejestruje poprawną ścieżkę, ale nadal nie odtwarza filmu.

2012-07-06 11:51:13.492 experiments[84702:12203] Using videoPath /Users/marius/Library/Application Support/iPhone Simulator/5.1/Applications/9799C851-8D2B-4CFE-8CFA-A4C4C954787F/experiments.app/sample_mpeg4.mp4

Z tego, co przeczytałem i zrozumiałem, powinno to działać. Wszelkie wskazówki lub sugestie dotyczące tego, co należy wypróbować?

Przeniosłem film na serwer HTTP (fg.mp4) i śledzę logi dostępu. Po kliknięciu przycisku odtwarzania pojawia się zwykłe czarne okno. Serwery znajduję dwa nowe wpisy w dzienniku:

168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 HTTP/1.1" 304 192 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; CPU OS 5_1 like Mac OS X; en_us)"
168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 HTTP/1.1" 206 33304 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; CPU OS 5_1 like Mac OS X; en_us)"

Tak więc telefon pobiera część zawartości filmu i - najwyraźniej - przygotowuje się na resztę w razie potrzeby. Czy jest jakiś oczywisty parametr dla MPMoviePlayerController, którego brakuje?

AKTUALIZACJA: Rozwiązanie i działający kod

Problem jest spowodowany przez ARC i fakt, że nie ma odniesienia doMPMoviePlayerController były przechowywane po wywołaniu metody konfiguracji kontrolera. Rozwiązanie: Dodanie zmiennej klasy do klasy i użycie jej do zachowania odniesienia do kontrolera przez cały okres życia filmu.

Tak wcześnie w deklaracji klasy (poza wszelkimi komunikatami / definicjami funkcji):

MPMoviePlayerController* mpController;

I wspomnianeplayButtonClicked używa tej zmiennej do śledzenia kontrolera:

NSString* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];
NSURL* url = [NSURL fileURLWithPath:path];
mpController = [[MPMoviePlayerController alloc] initWithContentURL:url];
mpController.view.frame = CGRectMake(10, 10, 300, 220);
[self.view addSubview:mpController.view];
[mpController play];

questionAnswers(2)

yourAnswerToTheQuestion