1

私のアプリにはインターネット接続が必要なので、ApplicationDelegateでapplicationDidFinishLaunching次のコマンドを実行しています。

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReach startNotifer];
[self updateInterfaceWithReachability: hostReach];

しかし、何らかの理由で、ログに記録されるのは次のとおりであるため、これは2回発生しているようです。

2010-02-04 14:25:48.004 myApp[201:207] Reachability Flag Status: -- ------- networkStatusForFlags
2010-02-04 14:25:48.240 myApp[201:207] STATUS: Access Not Available
2010-02-04 14:25:48.499 myApp[201:207] Reachability Flag Status: -- ------- networkStatusForFlags
2010-02-04 14:25:48.517 myApp[201:207] STATUS: Access Not Available

これは機能しているのは良いことですが、接続がないことをユーザーに通知するアラートメッセージがあり、2回ポップアップします...

到達可能性通知機能が2回起動するのはなぜですか?

4

1 に答える 1

0

なぜ2回ポップアップするのかわかりません。への呼び出しをコメントアウトしてみましたstartNotifierか?reachabilityWithHostName:メソッドの初期チェックを行う場合があります。

これは、回避策が最も適切な修正である場合です。例:

static bool userNotifiedOfReachability = NO;

...

- (void)updateInterfaceWithReachability:(Reachbility *)reachability {
    if (!userNotifiedOfReachability) {
        // Notify User

        ...

        userNotifiedOfReachability = YES;
    }
}

これは、「後でアプリをもう一度起動してみてください」というメッセージに適しています。

于 2010-02-04T19:56:28.940 に答える