Регистрация bool для NSNotification - PullRequest
0 голосов
/ 12 июля 2010

Я пытаюсь обернуть голову вокруг NSNotification, но не могу заставить его работать.Думаю, я неправильно понимаю, как зарегистрироваться для уведомления.

У меня есть bool как свойство в моем классе диспетчера подключений.При инициализации я аутентифицируюсь на нескольких серверах и проверяю, могу ли я получить доступ к внешнему URL-адресу (приложение будет в основном использоваться во внутренней сети компании, а внешнее соединение не всегда возможно)

Свойство BOOL будет изменено с YESНЕТ, если он не может получить доступ к соединению и, поскольку на это можно ответить в любое время, я подумал, что было бы лучше зарегистрировать уведомление на случай его изменения.Свойство называется externalConnectionAvailable

[ConnectionManager addObserver:self forKeyPath:@"externalConnectionAvailable" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];

и имеет метод:

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSLog(@"observer called");
}

Но это не вызывается.Я что-то делаю не так?

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 июля 2010

Это было что-то очень глупое.Я просто изменял свойство, вызывая externalConnectionAvailable, а не self.externalConnectionAvailable

0 голосов
/ 12 июля 2010

В этом утверждении:

[ConnectionManager addObserver:self forKeyPath:@"externalConnectionAvailable" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];

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

У вас должно быть что-то вроде

ConnectionManager *connectionManagerInstance = // initialize manager...
...
[connectionManagerInstance addObserver:self forKeyPath:@"externalConnectionAvailable" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];
...