【问题标题】:Why code is not being executed?为什么代码没有被执行?
【发布时间】:2014-05-13 22:34:15
【问题描述】:

我在扩展 WebView 的类中有以下方法

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"WEBVIEW - Start Load");

    static BOOL isFirstLaunch = YES;

    if (isFirstLaunch) {
        isFirstLaunch = NO;

    } else {
        [webView stringByEvaluatingJavaScriptFromString:@"localStorage.states = '[{},{\"name\":\"Dashboard\"}]'"];
    }
      // webView connected
    webviewTimeout = [NSTimer scheduledTimerWithTimeInterval:kWebViewLoadTimeOut target:self selector:@selector(webViewTimeout) userInfo:nil repeats:NO];
}

static 声明加上if else 在程序执行时被跳转。我在 Xcode 调试器中注意到这一点。 我看不出我的代码有什么问题。我虽然可能是由于方法内的static BOOL 变量声明,但我在 .m 文件中的任何块中声明了它。但if else 仍未被执行。在加载我的 WebView 之前,我还尝试将代码放在 ViewController 类中,但是提到的代码仍然没有被执行。我在这里缺少什么?

更清楚一点:我注意到代码没有使用 Xcode 调试器执行。我在NSLog 的方法开头放置了一个断点,如果我在if elsestatic 变量声明中的任何部分放置任何断点,似乎忽略它,并且没有中断。

提前致谢。

【问题讨论】:

  • 你怎么知道它不起作用?请说明您是如何对此进行调查的,例如断点、NSLogs 等
  • 另外,您是否在打开优化的情况下进行构建?
  • 您是否为 webview 指定了delegate?这是一个UIWebViewDelegate 方法。
  • @Rob,我忘了提,但是这个类也实现了 UIWebViewDelegate(我没有计划这个)
  • 导致 webViewDidStartLoad 被调用的代码在哪里?您需要调用的 LoadXXX 方法之一。

标签: ios objective-c


【解决方案1】:

编译器优化有时会使调试器感到困惑。他们可以重新排列指令甚至删除代码。关闭它们可以更轻松地单步执行代码。

【讨论】:

    【解决方案2】:

    你确定你做了以下事情吗:

    // set yourself as the delegate
    webView.delegate = self;
    
    // begin loading
    [webView loadRequest:[NSURLRequest requestWithURL:@"http://www.someURLHere.com"]];
    

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2011-11-20
      • 1970-01-01
      • 2012-02-02
      • 2015-05-14
      • 1970-01-01
      相关资源
      最近更新 更多