代码之家  ›  专栏  ›  技术社区  ›  Matej KoÅ¡út

iOS-[WKWebView.cxx\u construct]只能从主线程使用

  •  0
  • Matej KoÅ¡út  · 技术社区  · 7 年前

    我是iOS开发新手。

    https://www.ioscreator.com/tutorials/webview-ios-tutorial-ios11 使用web视图创建应用程序。它工作得很好,但突然停止,我不知道有什么不同。

    现在应用程序崩溃了: 在此代码中(函数的第一行):

    override func loadView() {
        viewerWebKit = WKWebView()
        viewerWebKit.navigationDelegate = self
        view = viewerWebKit
    }
    

    是什么导致了这个问题?为什么它以前工作得很好?为什么它突然停止工作?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Rob Napier    7 年前

    @洛克什的答案是正确的,但解决方案是错误的。 loadView() 似乎是在非主线程上调用的。这不应该发生。一个原因是你打电话来 手动(你永远不应该这样做)。另一个是你在引用 view 在后台线程上,您也不应该这样做(我怀疑你在做这个。)

    在中放置断点 loadView 负载视图 ,但您可能需要在其他地方添加类似的调用。

        2
  •  2
  •   lokesh    7 年前

    enter code here

    override func loadView() {
      DispatchQueue.main.async {
        viewerWebKit = WKWebView()
        viewerWebKit.navigationDelegate = self
        view = viewerWebKit
      }
    }
    
        3
  •  0
  •   Wings    7 年前

    你应该参与进来 主线 .

    dispatch_async(dispatch_get_main_queue(), {
     Some UI code here
    })