为什么我的警报显示两次?

| 在我的应用程序中,我检查到我的网站的当前连接状态以及应用程序启动时的网络状态:
[[NSNotificationCenter defaultCenter] addObserver:self 
       selector:@selector(reachabilityChanged:)
       name:kReachabilityChangedNotification object:nil];

internetReach = [[Reachability reachabilityForInternetConnection] retain];
[internetReach startNotifier];

hostReach = [[Reachability reachabilityWithHostName:@\"www.google.de\"] 
              retain];
[hostReach startNotifier];

[self updateInterfaceWithReachability:internetReach];
[self updateInterfaceWithReachability:hostReach];

//....

-(void)reachabilityChanged: (NSNotification* )note{
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
    [self updateInterfaceWithReachability: curReach];
}
在我的“ 1”中,如果无法建立与网站的连接,我想显示一个警报。 我的问题是警报显示了两次,所以第一次出现,而当我关闭它时,则显示秒:
if(curReach == hostReach){
        NetworkStatus netStatus = [curReach currentReachabilityStatus];

        if(netStatus != NotReachable){
            statusLabel.text = @\"connected\";
            [self setStatusColorGreen];
        }else{
            if(![internetReach connectionRequired]){
                statusLabel.text = @\"not connected\";
                compose.enabled = NO;
                [self doSMSFAlert];
                [self setStatusColorRed];
            }
        }
    }
有任何想法吗? 编辑:我现在注意到我有一个正在工作的主机,警报也会显示,但它不应该显示。但是状态为“已连接”     
已邀请:
因为您正在做两个可达性通知。通常,您的第一个用于Internet。第二个是针对特定主机的。为什么不只做主机可达性?这样,您只会收到一个警报。     
您正在响应通知事件。该事件可以根据状态变化进行多次发送,您可以根据自己的意愿来确定是否已经响应或正在响应类似的状态变化。一些选项存储一个布尔值或在尝试显示另一个视图之前检查您的警报视图是否处于当前状态。     

要回复问题请先登录注册