Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检查iphone是否存在互联网的代码_Iphone - Fatal编程技术网

用于检查iphone是否存在互联网的代码

用于检查iphone是否存在互联网的代码,iphone,Iphone,可能重复: 我担心这段代码是否会被苹果公司批准用于检查是否存在互联网连接 现在这个代码是正确的,还是我仍然遗漏了什么?编辑代码: Reachability* reachability = [Reachability reachabilityWithHostName:@"www.apple.com"]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus =

可能重复:

我担心这段代码是否会被苹果公司批准用于检查是否存在互联网连接

现在这个代码是正确的,还是我仍然遗漏了什么?编辑代码:

Reachability* reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];

if(remoteHostStatus == NotReachable) { NSLog(@"not reachable");}
else if (remoteHostStatus == ReachableViaWWAN) { NSLog(@"reachable via wwan");}
else if (remoteHostStatus == ReachableViaWiFi) { NSLog(@"reachable via wifi");}

你应该研究苹果的可达性,一个检测互联网存在的类

然而,苹果的课程写得很差,所以其他人自己动手清理。这个类是由Andrew Donoho编写的,作为Apple的可达性类的替代品:


如果您真的想使用自己的方法,这里有一个改进的版本:

NSURL        *requestUrl = [NSURL URLWithString:@"http://www.something.com"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:requestUrl];
NSData       *loadTest   = [NSData dataWithContentsOfURL:requestUrl];

if (loadTest == nil) {
    NSLog(@"No internet");
} else {
    [localwebView loadRequest:requestObj];
    [localwebView release];
}

您应该使用苹果的可达性api来检查互联网连接。 以下是示例代码:


看看苹果的可达性示例。我使用他们的代码在可达性状态更改时获取通知。
实现这一点的更好方法是使用异步请求。这样你就不会阻塞主线程,也不会冒被操作系统杀死的风险

如果没有internet,您将在委托方法上获得实例回调:
connection:n didFailWithError:

可达性是一种懒惰的方法,因为它有效地发出另一个请求来测试是否有互联网。这意味着在有互联网可用的情况下,您将提出两个不必要的请求

stringWithContentsOfURL
是一个同步调用。使用
initWithRequest:delegate:
移动到异步请求


或者你也可以去看看。它们是NSURL方法的良好包装。

当然,它会被批准的。这并不能完全满足您的期望。NSString connected在您的代码中不会等于NULL。你为什么要等?wait会阻塞当前线程,如果您在主线程上运行它,则会阻塞它。此外,这并不是检查NSString*connected和(connected==NULL)Internet之间的Internet可用性:有人偷了它。检查
connected
是否为
nil
是错误的方法,您应该检查
requestObj
。如果确实希望使用可达性,则可以进行编辑。然而,仅仅是一个页面的简单加载就显得有些过头了。请参阅我在下面的问题中添加的代码,以了解修改后的原始问题是否正确。无论你选择哪种方式,苹果都可以(只要它真的有效)。:)您好sudo您认为,我的代码是否会被批准?如果您坚持使用您的代码,首先您应该放弃
等待(20)。无需等待,一旦加载URL(如果没有internet,则不加载),它将移动到下一行。而且,你做得不对。如果你想知道你是否有互联网,你可以这样做:
NSURL*requestUrl=[NSURL URLWithString:@”http://www.ggg.php"];  NSURLRequest*requestObj=[nsurlRequestRequestWithURL:requestUrl],并检查
requestObj
是否为nill,而不是您对整个字符串业务所做的操作。根据您的经验,您认为此代码对他们合适吗?否则,我会将其更改为reachability one??让我知道你的代码目前不起作用。我会在我的回答中为你贴一个例子。是的,我的意思是如果我遵循你的代码,那么苹果团队有什么问题吗??