gpt4 book ai didi

javascript - iOS: [CFRunLoopTimer release]: message sent to deallocated instance 错误调试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:25 25 4
gpt4 key购买 nike

我正在开发 iOS 应用程序 (iOS 7)

其中我多次在 UiWebView 上执行 Javascript

但是很多次(随机)

**** 我遇到了这个错误的崩溃[CFRunLoopTimer release]: 消息发送到释放的实例

****有时候像这样的错误:**** **webthread 不允许多线程锁******

我已确保一次只有一个线程对 UIWebview 执行操作

我尝试在每个线程和队列(后台线程、主线程和不同的全局队列)上执行操作(但没有成功)

在分析应用程序并在 Instruments 上重现崩溃时(僵尸模式)我收到这条消息 Instrument crash reproduce message

我已经彻底检查了我的 javascript(100% 正确)。

但我仍然多次遇到此错误。

谁能告诉我如何解决这个问题调试此错误的任何解决方案或任何提示。(我已经设置了 NSZombienabled = YES )但这也没有帮助。

最佳答案

我也被这个完全相同的错误困扰了很长一段时间。

就像您所做的一样,我几乎尝试了所有方法,从 NSOperationQueue 的 addOperationWithBlock:dispatch_asyncperformSelectorOnMainThread:withObject:waitUntilDone:... (诚​​然是在黑暗中拍摄)

然后我发现我总是使用 [myJsContext evaluateScript:jsString]; 调用我的 js 代码,并使用 [myWebView valueForKeyPath: @"documentView.webView 从 UIWebView 获取 JSContext .mainFrame.javaScriptContext"];.

相反,我尝试了旧的 [myWebView stringByEvaluatingJavaScriptFromString:jsString];,它现在似乎可以工作(至少它已经很长时间没有崩溃了)。

所以这也许是一个解决方案,因为您也在使用 UIWebViews 吗?我的理解是 evaluateScript: 在您使用没有 UIWebView 的 JSContext 时特别有用。

(这个答案可能缺乏实际的技术确定性,所以如果您对 JavaScriptCore 了解更多,请深入挖掘......但是嘿,它似乎只适合我!)

关于javascript - iOS: [CFRunLoopTimer release]: message sent to deallocated instance 错误调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com