Mam kilka widoków, które mają dostęp do odtwarzacza filmów. Dla tych widoków umieściłem następujący kod w metodzie w AppDelegate. Wysyłają nazwę pliku do odtworzenia. Kod działa dobrze, ale wiem, że gdzieś jest wymagane wydanie. Jeśli dodaję ostatnią linię jako wydanie lub autooddzielanie, aplikacja zawiesi się po naciśnięciu przycisku użytkownika na odtwarzaczu filmów.Jak zwolnić MPMoviePlayerController?
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
initWithContentURL:[NSURL fileURLWithPath:moviePath]];
moviePlayer.movieControlMode = MPMovieControlModeDefault;
[moviePlayer play];
//[moviePlayer release];
otrzymuję ten błąd:
objc [51051]: Freed (id): Komunikat videoViewController wysłany do wyzwolonego obiektu = 0x1069b30
Program otrzymał sygnał: „EXC_BAD_INSTRUCTION”.
Jak mam zwolnić odtwarzacz?
Taa ... Mam już dźwięk/brak wideo. Niesamowite!Jak chronić się przed wieloma powiadomieniami? Czy ulegnie awarii, jeśli będziesz obsługiwać wiele? – 4thSpace
Musisz mieć jakąś flagę: jeśli nie jest ustawiona, ustaw ją i zwolnij gracza. Jeśli jest ustawiony, nie rób nic. –
Prawdopodobnie możesz również przechowywać MPMoviePlayerController jako ivar w delegacie. W metodzie moviePlaybackDidFinish: można zwolnić ivar i ustawić go na zero zamiast dostępu do powiadomienia.object. Drugie powiadomienie wyśle stop i autorelease do zera, co jest w porządku. –