gpt4 book ai didi

ios - 我们可以避免在 Safari 中打开应用程序时出现 webView 内存问题吗?

转载 作者:行者123 更新时间:2023-11-29 01:14:39 26 4
gpt4 key购买 nike

在我的应用程序中,一个按钮(带有 url 链接)转到一个新的 UIViewController,其中包含一个 webView。这行得通,很好。但问题是,一旦用户开始点击 webView 中的多个链接,内存使用量就会开始增加并继续增长,达到超过 300mb 的程度,我的应用程序就会崩溃。

我正在想办法解决这个问题?有没有更好的方法来处理 webView 中的内存问题?或者有没有一种方法可以在 safari 浏览器中打开链接并在顶部有一个返回我的应用程序的小返回按钮?这会解决我的应用程序的内存问题吗?如果是,我该如何编码?

目前我在 UIViewController 中使用标准代码,其中包含如下 webView:

var productUrl: String? // Received from previous ViewController segue

Override func viewDidLoad() {

// Enable zoomIn/Out option for users
webView.scalesPageToFit = true
webView.delegate = self

// Validate URL
NSURL.validateUrl(productUrl!, completion: { (success, urlString, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if (success) {
print("Success")
self.url = NSURL (string: urlString!)
let requestObj = NSURLRequest(URL: self.url!);
self.webView.loadRequest(requestObj);
}
else {
print("Fail")
}
})
})
}

func webViewDidStartLoad(webView: UIWebView) {

UIApplication.sharedApplication().networkActivityIndicatorVisible = true
activityIndicator.startAnimating()
funcToCallWhenStartLoadingYourWebview()

}

func webViewDidFinishLoad(webView: UIWebView) {
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
activityIndicator.stopAnimating()
funcToCallCalledWhenUIWebViewFinishesLoading()
}

最佳答案

很少有教程可以帮助您解决这个问题。尝试看一个非常好的WebKit Joyce Echessa 在 appcoda 上提供的教程。这将帮助您解决问题。

在 Joyce Echessa 的教程中您必须处理的另一件事是,当您从 webKit View 切换回其他 View 时,您将遇到崩溃,因为该教程不包括删除已注册观察者的方法。但这可以通过使用下面的代码来解决(它删除了“loading”和“estimatedProgress”键路径。我不包括这里的描述,因为这对可能已经努力工作的 Joyce Echessa 来说是不公平的。所以你会一旦您查看了教程,就会有更好的想法,因为它有详细的文档记录。

测试教程并遇到崩溃后,请尝试使用以下代码来删除 viewDidDissapear block 中创建的观察者。

 override func viewWillDisappear(animated: Bool) {
if (webView.loading) {
webView.stopLoading()
}
progressView.setProgress(0.0, animated: false)
webView.removeObserver(self, forKeyPath: "estimatedProgress")
webView.removeObserver(self, forKeyPath: "loading")

webView.navigationDelegate = nil
webView.UIDelegate = nil
}

关于ios - 我们可以避免在 Safari 中打开应用程序时出现 webView 内存问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358182/

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