我在扩展 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 文件的任何 block 之外声明了它。但是 if else
仍然没有被执行。我还尝试在加载 WebView 之前将代码放入 ViewController 类中,但提到的代码仍未执行。我在这里缺少什么?
更清楚一点:我注意到代码没有使用 Xcode Debugger 执行。如果我在 if else
或 static
中的任何部分中放置任何断点,我会在 NSLog
中的方法开头放置一个断点变量声明,似乎忽略了它,并且没有中断。
提前致谢。
最佳答案
编译器优化有时会使调试器感到困惑。他们可以重新排列指令甚至删除代码。关闭它们可以更轻松地单步执行代码。
关于ios - 为什么代码没有被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632847/