Есть ли хороший способ использовать наблюдение за ключом и блокировать вместе? У меня есть функция, которая принимает блок завершения, и я хочу, чтобы этот блок завершения выполнялся, когда наблюдаемый статус изменяется на AVPlayerItemStatusReadyToPlay
. Могу ли я передать блок, используя контекст наблюдателя, или это нарушит основы программирования KVO?Использование KVO в блочной функции
- (void)setVideoWithURL:(NSURL *)url completed:(PlayerCompletedWithFinishedBlock)completedBlock {
...
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([change isEqual: @"AVPlayerItemStatusReadyToPlay"]) {
// Is there a way to run the completion block from here?
}
}
В GitHub есть контроллер KVO, на который вы можете посмотреть – Wain