Ich merke, dass eine ähnliche Frage vorher gepostet wurde, aber ich kann wirklich nicht scheinen, eine Lösung zu finden, die für mich funktioniert. Ich habe einen Movieplayer-Klasse, die eine Ivar von MPMoviePlayerController speichert, und ich habe die folgende Methode in der Klasse:MPMoviePlayerController wird einmal abgespielt, dann einen Fehler werfen
-(void)playMovie:(NSString *)movieName
{
NSURL *movieURL;
NSBundle *bundle = [NSBundle mainBundle];
if(bundle)
{
NSString *moviePath = [bundle pathForResource:movieName ofType:@"m4v"];
if(moviePath)
{
movieURL = [NSURL fileURLWithPath:moviePath];
}
}
MPMovieController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
if(mp)
{
self.moviePlayer = mp;
[mp release];
[self.moviePlayer play];
}
[movieURL release];
}
Wenn Anruf Ich spiele Film einmal der Film fein spielt, aber wenn es aufgerufen wird, wieder auf einem anderen (oder die gleiche) Filmdatei Ich bekomme folgenden Fehler-Stack:
Ich bin mir nicht sicher, wie ich es beheben soll! Ich nahm an, dass, wenn self.moviePlayer = mp aufgerufen wird, der aktuelle moviePlayer veröffentlicht wird und der neue hinzugefügt wird? Die Eigenschaft ist auf (nicht atomisch, beibehalten) festgelegt. Kann mir bitte jemand helfen?
Dank
Hey, danke für die Antwort. Ich habe Ihren Vorschlag ausprobiert und erhalte einen Fehler-Stack mit der Methode NSPopAutoreleasePool> [MPMoviePlayer Controller dealloc]. Ich habe den MPMoviePlayerController in meinem Code nie wieder freigegeben. Ich habe jede Zeile durchsucht, nur um sie zu überprüfen. Werden MPMoviePlayerControllers automatisch zum Pool hinzugefügt? –
Wenn Sie den Stapel haben, dann sollten Sie sehen, wo der Film-Player veröffentlicht wurde (hoffentlich). Nein, Sie haben init verwendet, es liegt also in Ihrer Verantwortung, es freizugeben (Kakao-Speicherverwaltung). Sie müssen aufspüren, wenn Sie den Player freigeben. Sie können auch eine Kategorie für MPMoviePlayer erstellen und dann die Veröffentlichungsmethode implementieren. Platziere einen Breakpoint in dieser Methode und finde heraus wann er aufgerufen wird. –