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];

但由于某种原因,这似乎被触发了两次,因为记录的内容如下:

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

这很好,它正在工作,但我有一条警告消息通知用户没有连接,它弹出两次......

为什么可达性通知会触发两次?

4

1 回答 1

0

不知道为什么它会弹出两次。您是否尝试过注释掉对 的调用startNotifier?它可能会在方法中进行初始检查reachabilityWithHostName:

这可能是一种解决方法是最合适的解决方法的情况,例如:

static bool userNotifiedOfReachability = NO;

...

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

        ...

        userNotifiedOfReachability = YES;
    }
}

这适用于“请稍后再试启动应用程序”消息。

于 2010-02-04T19:56:28.940 回答