Лучший способ реализовать тайм-аут MPMoviePlayer

#iphone #objective-c #ios4 #mpmovieplayercontroller #mpmovieplayer

#iPhone #objective-c #ios4 #mpmovieplayercontroller #mpmovieplayer

Вопрос:

У меня есть MPMoviePlayer, который загружает фильм из потока. Я реализовал тайм-аут на 15 секунд с помощью таймеров. Но, может быть, есть какой-то другой лучший способ реализовать тайм-аут без таймера?

Ответ №1:

Зарегистрируйтесь для MPMoviePlayerLoadStateDidChangeNotification . В его обработчике проверьте текущее состояние загрузки и замаскируйте MPMovieLoadStateStalled .

 - (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification
{
    //is the player stalled, hence possibly starving?
    if ((movieController_.loadState amp; MPMovieLoadStateStalled) == MPMovieLoadStateStalled)
    {  //yes->do something
       NSLog(@"hey there, I am starving to death here");
    }
}
  

Возможно, вы захотите зарегистрировать таймер в верхнем if-предложении — например, 10 секунд. Как только у этого дочернего устройства закончится время без дальнейших изменений состояния, сделайте что-нибудь, чтобы завершить / пропустить воспроизведение видео.

Ответ №2:

Я не уверен, но я думаю, что это можно использовать performSelector в качестве таймера?

 [self performSelector:@selector(checkTimeout:) withObject:theMovie afterDelay:15];
  

а затем проверьте состояние фильма.