gpt4 book ai didi

iphone - 如何释放MPMoviePlayerController?

转载 作者:行者123 更新时间:2023-12-03 18:17:02 26 4
gpt4 key购买 nike

我有几个访问电影播放器​​的 View 。我已将以下代码放入 AppDelegate 中针对这些 View 的方法中。他们发送要播放的文件名。该代码工作正常,但我知道某个地方需要发布。如果我将最后一行添加为发布或自动发布,则一旦用户在电影播放器​​上按下“完成”,应用程序就会崩溃。

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] 
initWithContentURL:[NSURL fileURLWithPath:moviePath]];
moviePlayer.movieControlMode = MPMovieControlModeDefault;
[moviePlayer play];
//[moviePlayer release];

我收到此错误:

objc[51051]: FREED(id): 消息 videoViewController 发送到已释放对象=0x1069b30

程序收到信号:“EXC_BAD_INSTRUCTION”。

我应该如何释放播放器?

最佳答案

我发现 MPMoviePlayerController 必须先发送停止消息,然后才能安全地释放它。所以我在handlePlaybackEnd中执行它 - 首先我停止它,然后我自动释放它。调用release似乎效果不太好:

- (void) moviePlayBackDidFinish : (NSNotification *) notification
{
VideoPlayerController * player = notification.object;
[player stop];
[player autorelease];
}

整个事情变得有点棘手,因为 MPMoviePlayerPlaybackDidFinishNotification 可以多次发送,但调用 stop/autolease 两次也不会对您有任何好处。所以你需要以某种方式防范这种情况。

最后,似乎需要对主运行循环进行几次迭代,直到您可以安全地创建新的 MPMoviePlayerController 实例。如果操作太快,您将听到声音但看不到视频。很有趣吧?

关于iphone - 如何释放MPMoviePlayerController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com