【发布时间】:2014-08-22 20:14:24
【问题描述】:
最近,我遇到了 iOS 编译器的奇怪行为。我编写了一种名为hasConnectivity 的方法。在这种方法中,首先我使用 Rechability 类检查互联网连接是否可用。如果是,那么我再次通过向 Apple 调用 NSURLRequest 来检查网络。
下面是我的代码:
-(BOOL)hasConnectivity {
if(!isOnline)
{
return TRUE;
}
NSURL* url = [NSURL URLWithString:@"http://www.apple.com/"];
NSStringEncoding encoding;
NSError* error = nil;
NSString* pageData = [NSString stringWithContentsOfURL:url
usedEncoding:&encoding error:&error];
NSLog(@"page data=%@",pageData);
if(pageData)
{
return TRUE;
}
else
{
return FALSE;
}
}
当我调用此方法时,Control 进入第一个块并执行 return TRUE; 语句,因此理想情况下,控制应该从该点返回,但不会从该点返回。相反,它会跳转到下一个块(如果 pageData 的条件)并执行return FALSE; 语句。
我已经重启了Xcode,也重启了PC,调试了很多次,但还是没有成功。如果有人遇到同样的问题,请给我解决方案。
【问题讨论】:
-
这似乎是倒退了一步 - 但在那里扔了一些
NSLog()声明。你不可能在达到return声明并继续超越它。 -
当你使用调试器时,它经常会像这样跳来跳去。特别是,通常只有一个实际的
return语句,因此控制从方法中的所有return语句跳转到那个。花更多的时间调试,你会习惯的。 -
@Hot Licks:我也在设备中安装了该应用程序,但没有连接到 mac,但由于这个问题,它给了我同样的错误输出。
标签: objective-c ios7 xcode5