0

私は NSNotification に頭を悩ませようとしていますが、それを機能させることができないようです。通知の登録方法を誤解していると思います。

接続マネージャー クラスのプロパティとして bool があります。初期化時に、いくつかのサーバーで認証を行い、外部 URL にアクセスできるかどうかを確認します (アプリは主に会社のイントラネットで使用され、外部接続は常に可能とは限りません)。

接続にアクセスできない場合、BOOL プロパティは YES から NO に変更されます。これはいつでも応答できるため、変更されたときに通知を登録するのが最善であると考えました。プロパティは 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");
}

しかし、これは呼び出されません。私は何か完全に間違っていますか?

ありがとう

4

2 に答える 2

0

この声明では:

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

「CocoaWay」に従い、クラスとオブジェクトインスタンスに通常の命名スキームを使用しているとすると、オブジェクトインスタンスではなく、クラス全体にオブザーバーを追加しようとしているように見えます。

あなたは次のようなものを持っている必要があります

ConnectionManager *connectionManagerInstance = // initialize manager...
...
[connectionManagerInstance addObserver:self forKeyPath:@"externalConnectionAvailable" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];
于 2010-07-12T05:35:07.250 に答える
0

それは非常にばかげたものでした。self.externalConnectionAvailable ではなく externalConnectionAvailable を呼び出してプロパティを変更していました

于 2010-07-12T23:56:05.753 に答える