Как узнать, какие предметы мой объект наблюдает за ключевыми значениями?Просмотр Замечания о ключевом значении
Единственный способ, которым я смог узнать, если я уже наблюдаю, - это попытаться удалить наблюдение. Если возникает исключение, то я не наблюдал.
for (AVPlayerItem *item in itemsToRemove) {
@try{
[item removeObserver:self forKeyPath:@"status" context:(__bridge void *)(foo)];
}@catch(id anException){
//wasn't observing
}
}
EDIT: Я рассматриваю, используя свой собственный словарь, чтобы отслеживать наблюдения, но это кажется излишним поскольку KVO словарь существует где-то. К сожалению, нет доступа к API.
Здесь http://stackoverflow.com/questions/27482173/how-to-check-key-value-observing-in-objectivec-for-dictionary-of-arrays/27482567# 27482567 вы можете увидеть пример и два метода наблюдения огня. –
@OnikIV OP не спрашивал, как наблюдать. Он спрашивал, как узнать, наблюдает ли он. – Rob
Да @Rob, если он прочитал весь ответ, опубликованный, он хорошо видит, чем когда вы наблюдаете какое-либо свойство этот метод: "- (void) observValueForKeyPath: (NSString *) keyPath ofObject: (id) изменение объекта: (NSDictionary *) change context: (void *) context { // Здесь ваши действия зависят от пути ключа ... } ". Другими словами, если вы не заметили какой-либо ключевой путь, этот метод не будет вызываться. –