2015-12-04 6 views
0

добавить наблюдатель с именем «статус» в AVPlayerItem. Отправить наблюдатель затем установить AVPlayerItem к нулю, когда наблюдатель не завершаетКак установить AVPlayerItem к нулю, когда наблюдатель не завершает

меня удалить наблюдателя при dealloc AVPlayerItem

Получить следующую ошибку:

NSInternalInconsistencyException', reason: 'An instance 0x7dc5e7d0 of class AVPlayerItem was deallocated while key value observers were still registered with it. Current observation info: ( Context: 0x0, Property: 0x7b8ad140>

ответ

0

Это вызвало парафировать avplayeritem на асинхронном

0

Перед тем, как установить playerItem всухую удалите наблюдатель:

playerItem.removeObserver(self, forKeyPath: "status") 

Если вы будете ждать, пока Deinit/dealloc, после того, как вы уже установили playerItem к п l, то вы больше не будете ссылаться на него, чтобы удалить наблюдателей.

+0

Я удалил наблюдателя до dealloc AVPlayerItem, но я получаю ошибка, вызванная AVPlayerItem, является dealloc – Leo

+0

Можете ли вы опубликовать код, в котором вы удаляете наблюдателей? – kleezy

1

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

Например:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(movieItemDidReachEnd:) 
              name:AVPlayerItemDidPlayToEndTimeNotification 
              object:nil]; 

Затем, когда вы сделали (то есть, когда вы устанавливаете AVPlayerItem в nil), удалить наблюдателя:

[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil]; 

Если вы предоставить более подробную информацию, возможно, я могу помочь больше. Благодаря!

Edit:

В стрижа было бы ...

NSNotificationCenter.defaultCenter().addObserver(self, selector: "movieDidReachEnd", name: AVPlayerItemDidPlayToEndTimeNotification, object: nil) 

    NSNotificationCenter.defaultCenter().removeObserver(self, name: AVPlayerItemDidPlayToEndTimeNotification, object: nil) 
+0

Я хочу наблюдать статус ReadyToPlay, уведомление, похоже, не поддерживается – Leo

+0

Я столкнулся с той же проблемой в AVPlayerItem. – vipulk617

 Смежные вопросы

  • Нет связанных вопросов^_^