У меня есть оболочка для AVPlayer под названием PGPlayer, поэтому всякий раз, когда я создаю экземпляр PGPlayer, например:
PGPlayer *myPlayer = [PGPlayer new];
В методе init () моего класса PGPlayer я добавляю наблюдателя для keyPath «currentItem», например:
[self addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:nil];
Теперь, когда вызывается этот наблюдатель, я добавляю наблюдателя состояния, например:
[self.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
И когда вызывается этот наблюдатель, я проверяю статус currentItem и, соответственно, добавляю наблюдателя времени, а playerItem добавляет таких наблюдателей, как:
if([keyPath isEqualToString:@"status"]){
if(self.currentItem.status == AVPlayerItemStatusReadyToPlay){
[self addPlayerItemTimeObserver];
[self addItemEndObserverForPlayerItem];
[self.delegate status:AVPlayerItemStatusReadyToPlay];
}
}
Теперь я выбираю видео и представляю контроллер представления, в котором я выполняю эту задачу.
ПРОБЛЕМА
Теперь я столкнулся с такой проблемой: если я создаю экземпляр своего PGPlayer, и он устанавливает наблюдатель @ "status", но этот наблюдатель состояния еще не вызвал, и перед этим я открываю контроллер представления. В этом случае PGPlayer не освобождается. Но если я нахожусь на том же контроллере, вызывается наблюдатель состояния, и после этого я открываю контроллер представления, он работает нормально, и мой PGPlayer отключается. Пожалуйста, помогите