首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 4中创建EXC_BAD_ACCESS变量时如何修复“WKPreferences”

在Swift 4中创建EXC_BAD_ACCESS变量时如何修复“WKPreferences”
EN

Stack Overflow用户
提问于 2018-12-27 02:03:25
回答 1查看 1.7K关注 0票数 7

在我的代码中,我有一个部分创建了一个带有特定WKWebViewConfiguration的新WKWebViewConfiguration,而这个WKWebViewConfiguration又有一个WKPreferences引用。然后将所有这些添加到应用程序的视图中。

问题是,到目前为止,我的代码一直运行得很完美,没有问题。

现在,出于某种奇怪的原因,当我启动应用程序时,我得到

线程1: EXC_BAD_ACCESS (code=2,address=0x7ffeec686fc0)

在行中,当我为WKPreferences创建一个变量时。

我正在使用Xcode 10.1Swift 4,并安装了AlamofireNetworkReachability吊舱。我尝试过在没有WKPreferences的情况下创建WKPreferences,但是错误只是转移到WKWebViewConfiguration上。

代码语言:javascript
复制
func createWebView() {
    let preferences = WKPreferences()   //<-- EXC_BAD_ACCESS
    preferences.javaScriptEnabled = true
    let webConfiguration = WKWebViewConfiguration()
    webConfiguration.preferences = preferences
    webConfiguration.allowsInlineMediaPlayback = true
    webViewVar = WKWebView(frame: self.view.bounds, configuration: webConfiguration)
    webViewVar.uiDelegate = self
    self.view = webViewVar
}

override func loadView() {
    createWebView()
}

预期的行为是,应用程序将启动并显示代码中其他地方指定的网页,该页面不会改变。实际结果是,应用程序在启动时会出现EXC_BAD_ACCESS错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-27 02:45:26

我不得不说你找到了一个窃听器。出于某种原因,运行时不允许您在应用程序生命的早期创建WKPreferences对象。

解决办法是,你将不得不推迟创建网页视图,直到应用程序启动和运行。为此,删除loadView并实现viewDidLoad,并在其中完成所有工作,使web视图成为主视图的子视图,而不是试图使其成为主视图。

代码语言:javascript
复制
var webViewVar : WKWebView!
func createWebView() {
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    let webConfiguration = WKWebViewConfiguration()
    webConfiguration.preferences = preferences
    webConfiguration.allowsInlineMediaPlayback = true
    webViewVar = WKWebView(frame: self.view.bounds, configuration: webConfiguration)
    webViewVar.uiDelegate = self
    self.view.addSubview(webViewVar)
    webViewVar.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
override func viewDidLoad() {
    super.viewDidLoad()
    createWebView()
}

这很烦人,你应该向苹果公司提交一份错误报告,但至少这会让你继续工作下去。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53938983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档