Как выпустить MPMoviePlayerController?

То, что вы должны сделать, это сделать index одинаковым, pandas чувствительным index, что означает, что они проверят индекс при выполнении присваивания

C = pd .DataFrame(A.index,index=A.index) # change here
C .columns = ['I']
C['Y'] = B .loc[C.I, 'Y']
C
Out[770]: 
   I  Y
4  4  3
5  5  4

или просто изменят добавление кода. значения в конце

C['Y'] = B .loc[C.I, 'Y'].values

Так как вы упомянули поиск, давайте использовать lookup

C['Y']=B.lookup(C.I,['Y']*len(C))
#Out[779]: array([3, 4], dtype=int64)
26
задан 4thSpace 29 March 2009 в 20:23
поделиться

5 ответов

То, что я нашел, - то, что MPMoviePlayerController должен быть отправлен сообщение остановки, прежде чем можно будет безопасно выпустить его. Таким образом, я делаю это в handlePlaybackEnd - сначала я останавливаю его, затем я автовыпускаю его. Вызов выпуска, кажется, не работает слишком хорошо:

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

Все это становится немного более хитрым в этом, MPMoviePlayerPlaybackDidFinishNotification может быть отправлен несколько раз, но звонящий stop/autorlease дважды не сделает Вас никакая польза также. Таким образом, необходимо принять меры против этого так или иначе.

Наконец, это, кажется, берет несколько повторений основного цикла выполнения, пока Вы не можете безопасно создать новый экземпляр MPMoviePlayerController. Если Вы сделаете это слишком быстро, то Вы станете звуковыми, но никакое видео. Отличное развлечение, ха?

18
ответ дан 28 November 2019 в 07:50
поделиться

Чтобы ответить на комментарий 4thSpace к ответу выше, вы можете удалить наблюдателя уведомлений, чтобы вы не получали его несколько раз:

- (void)moviePlayBackDidFinish:(NSNotification *)notification {
    MPMoviePlayerController *theMovie = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self
        name:MPMoviePlayerPlaybackDidFinishNotification
        object:theMovie];
    [theMovie stop];
    [theMovie release];
}
7
ответ дан 28 November 2019 в 07:50
поделиться

Для меня было недостаточно остановки и отпускания, если игрок не дошел до конца.

Мое решение - установить moviePlayer.initialPlaybackTime = -1 в moviePlayBackDidFinish: перед его выпуском:

-(void)playMovie: (NSString *)urlString{ 
    movieURL = [NSURL URLWithString:urlString]; 
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
    moviePlayer.initialPlaybackTime = 0; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish: ) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer] ;

    moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 
    moviePlayer.movieControlMode = MPMovieControlModeDefault;
    moviePlayer.backgroundColor = [UIColor blackColor];

    [moviePlayer play];
}

-(void)moviePlayBackDidFinish: (NSNotification*)notification{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer] ; 

    moviePlayer.initialPlaybackTime = -1; 

    [moviePlayer stop]; 
    [moviePlayer release]; 
}
2
ответ дан 28 November 2019 в 07:50
поделиться

У меня была та же проблема, и я только что понял, что установил метод уведомления с object: nil (это была копипаста).

У меня было несколько уведомлений, хотя у меня вообще не должно было быть никаких уведомлений.

Вот мой новый код настройки уведомлений, который исправил все (см. Объект: moviePlayer):

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

Надеюсь, что это поможет. Теперь весь мой код работает правильно.

0
ответ дан 28 November 2019 в 07:50
поделиться

для iphone os 3.2 необходимо вызвать [moviePlayer pause]; перед вызовом [moviePlayer stop];

{{1} }
3
ответ дан 28 November 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: