【问题标题】:return statement is not stopping method executionreturn 语句没有停止方法执行
【发布时间】: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


【解决方案1】:

确保您正在构建的构建配置(可能是Debug,如果您没有更改默认值)已关闭优化:

在调试时打开优化可能会导致类似这样的奇怪问题。

【讨论】:

  • 我查过了,和你这里说的一样。
猜你喜欢
  • 1970-01-01
  • 2021-09-10
  • 2019-08-12
  • 2020-12-12
  • 2012-04-18
  • 2014-09-17
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
相关资源
最近更新 更多