У меня есть обертка AVPlayer называется PGPlayer.So всякий раз, когда я создаю экземпляр PGPlayer как:статус AVPlayerItem наблюдатель сохраняет AVPlayer
PGPlayer *myPlayer = [PGPlayer new];
В методе Init() моего класса PGPlayer, я добавляю наблюдателю Ключевой путь "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 и устанавливает @ «статус» наблюдателя, но что статус наблюдателя еще не звонил и до того, что я поп контроллер представления. В этом случае PGPlayer не освобождается. Но если я нахожусь на одном контроллере, и вызывается статус наблюдателя, и после этого я выхожу на контроллер представления, он отлично работает и мой PGPlayer получает освобождение. Пожалуйста, помогите