使用MPMoviePlayerViewController iOS 4.2时,AudioToolbox的iPhone内存泄漏

时间:2011-02-22 16:29:31

标签: iphone video memory-leaks

我正在使用以下代码(在标签栏应用程序中的视图控制器内)播放用户选择表格行后从主包中加载的视频。

- (void)loadMoviePlayer:(NSString*)moviePath
{
    NSURL* fileURL    =   [[NSURL alloc] initFileURLWithPath:moviePath];

    MPMoviePlayerViewController* player = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
    [fileURL release];

    [self presentMoviePlayerViewControllerAnimated:player];
    [player release];
}

应用程序在模拟器中构建并运行时没有任何明显问题(我还没有在设备上测试过)但是当我通过Instruments运行它时,在视频播放过程中会发生内存泄漏。 乐器将AudioToolbox强调为“负责任的图书馆”和SimAggregateDevice::SimAggregateDevice(_CFString const*, _CFString const*, long&)

APComponent::CreateDispatchTable(AudioComponentPluginInterface*, unsigned long)

作为'负责任的框架'。

你可以放弃任何光线,非常感谢! 感谢。

2 个答案:

答案 0 :(得分:0)

您也可以为iPhone和iPad的电影播放器​​创建自己的自定义控件,您可以在其中创建自定义音量管理,以及许多可以管理的内容。

按照方法启动moview播放器。用于管理mov

-(void)initAndPlayMovie:(NSURL *)movieURL andViewController:(UIViewController*)vCtr
{
    self.mPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
    // we have movie from file - Alizee :)
    [self.mPlayer.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];

    // we don't need standard controlls as we have built our own
    [self.mPlayer.moviePlayer setControlStyle:MPMovieControlStyleNone];

    // aspect fit to screen  mode
    [self.mPlayer.moviePlayer setScalingMode:MPMovieScalingModeAspectFit];

    // full screen mode
    [self.mPlayer.moviePlayer setFullscreen:YES animated:YES];

    // to start movie player
    [vCtr presentMoviePlayerViewControllerAnimated:self.mPlayer];

    // now we will add our own view over video player
    self.vCtr.view.frame=CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height-20);

    [self.mPlayer.view addSubview:self.vCtr.view];
}

- (void)stopTapped:(id)sender{
    [self.mPlayer.moviePlayer stop];
}

-(void)moviePlayBackDidFinish:(NSNotification*)notification
{
    [self.mPlayer dismissMoviePlayerViewControllerAnimated];
    [self.vCtr.view removeFromSuperview];
}

答案 1 :(得分:0)

  

问题不在于“模拟器”本身,而在于AVFoundation   为Mac OS X编译的框架。 - Alex Nichol 2011年8月17日23:53

我将Alex的评论设为接受的答案。 ķ