Проблема памяти MPMoviePlayerViewController - PullRequest
0 голосов
/ 16 декабря 2010

У меня проблема с MPMoviePlayerViewController на iPad iOS 4.2. Приложение воспроизводит видео, но когда видео останавливается, память не освобождается. Для создания видеоплеера я использую следующий код:


    MPMoviePlayerViewController * videoPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:articleUrl];
    [videoPlayer moviePlayer].movieSourceType = MPMovieSourceTypeFile;
    [videoPlayer moviePlayer].controlStyle = MPMovieControlStyleDefault;
    [videoPlayer moviePlayer].scalingMode = MPMovieScalingModeAspectFit;
    [videoPlayer moviePlayer].fullscreen = NO;

    self.playerViewController = videoPlayer;
    [videoPlayer release];
    videoPlayer = nil;

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(movieFinishedCallback:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:[playerViewController moviePlayer]];

    MPMoviePlayerController *player = [playerViewController moviePlayer];

    CGRect playerFrame = CGRectMake(20, 20, self.view.frame.size.width - 40, self.view.frame.size.height - 40); 
    player.view.frame = playerFrame;
    [self.view addSubview:player.view];
    [player play];

и есть фильм Законченный обратный вызов: код метода:


    - (void) movieFinishedCallback:(NSNotification*) aNotification {
    MPMoviePlayerController *player = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:MPMoviePlayerPlaybackDidFinishNotification 
                                                  object:player];
    [player.view removeFromSuperview];
    [player release];
    player = nil;

}

Кто-нибудь может мне помочь с этим? Я прочитал много тем, связанных с этой проблемой, но не нашел решения.

1 Ответ

0 голосов
/ 16 декабря 2010

Ваш код выглядит хорошо - ваши выпуски совпадают с вашим сохранением и т. Д.

Вы запускали это в приборах - то есть это определенно утечка? Откуда ты знаешь, что память не освобождается?

Нет ничего плохого в том, что среда воспроизведения видео хранит ваше видео в кеше, пока он освобождает память, если вы не хватает (т.е. получаете предупреждение о нехватке памяти). Попробуйте запустить его в симуляторе и смоделировать предупреждение памяти - держу пари, что память освобождается.

Кроме того, вы не знаете, будет ли он выпущен автоматически в любой момент.

Я не буду беспокоиться об этой проблеме, пока вы не столкнетесь с предупреждениями памяти. До тех пор я бы просто предположил, что видеокарта знает, что делает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...