Ich habe ein paar Ansichten, die auf den Movie-Player zugreifen. Ich habe den folgenden Code in eine Methode in AppDelegate für diese Ansichten eingefügt. Sie senden den Dateinamen zum Abspielen ein. Der Code funktioniert gut, aber ich weiß, dass eine Freigabe irgendwo erforderlich ist. Wenn ich die letzte Zeile als Release oder Autorelease hinzufüge, stürzt die App ab, sobald der Benutzer done auf dem Movieplayer drückt.Wie kann ich MPMoviePlayerController freigeben?
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
initWithContentURL:[NSURL fileURLWithPath:moviePath]];
moviePlayer.movieControlMode = MPMovieControlModeDefault;
[moviePlayer play];
//[moviePlayer release];
ich diesen Fehler:
objc [51051]: FREED (id): Nachricht videoViewController zu befreite Objekt gesendet = 0x1069b30
Programmsignal empfangen: „EXC_BAD_INSTRUCTION“.
Wie sollte ich den Player freigeben?
Yeah -Ich habe das Geräusch/keine Video-Sache schon. Genial!Wie schützen Sie sich vor Mehrfachbenachrichtigungen? Wird es abstürzen, wenn Sie mit mehreren umgehen? – 4thSpace
Sie müssen eine Art Flagge haben: Wenn sie nicht gesetzt ist, stellen Sie sie ein und lassen Sie den Player los. Wenn es eingestellt ist, tu nichts. –
Sie könnten den MPMoviePlayerController wahrscheinlich auch als Ivar im Delegaten speichern. In der moviePlaybackDidFinish: -Methode können Sie den ivar freigeben und auf nil setzen, anstatt auf notification.object zuzugreifen. Die zweite Benachrichtigung sendet Stopp und Autorelease an Null, was in Ordnung ist. –