Удаление наблюдателя после наблюдаемого события - PullRequest
0 голосов
/ 25 июня 2011

У меня есть наблюдатель объекта, который мне нужен только для обнаружения одной вещи.Как только я закончу с этим, я бы хотел удалить его, чтобы исключить накладные расходы.

Таким образом, это выглядело бы примерно так:

-(void) observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*) change context:(void*)context{
    if ([keyPath isEqual:@"doingSomething"]){
        if ([object isDoingSomething] == NO) {
                    [my_object setDoingSomething: DO_NOTHING_FOREVER];
                    [my_object removeObserver:self forKeyPath:@"doingSomething"] // <= ERROR eventually
                }
        }
}

Хотя это не работает и выдаетошибка типа:

NSKVOPendingNotificationRelease “EXC_BAD_ACCESS”

1 Ответ

1 голос
/ 25 июня 2011

Разве вы не должны звонить удалить наблюдателя на object?

[object removeObserver:self forKeyPath:@"doingSomething"];

removeObserver:forKeyPath: метод должен быть вызван на приемнике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...