gpt4 book ai didi

ios - Swift 中的 UIWebView : exc_bad_access

转载 作者:可可西里 更新时间:2023-11-01 00:53:51 29 4
gpt4 key购买 nike

我的带有 UIWebView 的 Swift 应用在尝试获取当前 URL 时因 exc_bad_access 而崩溃。它也仅在某些情况下崩溃(通常取决于用户在该 UIWebView 中执行的操作)。尝试加载代码中提供的 url,然后点击取消。如果我不从 UIWebViewDelegate 协议(protocol)实现方法,它永远不会崩溃。

class AuthViewController: UIViewController, UIWebViewDelegate {

@IBOutlet var authWebView: UIWebView

init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// Custom initialisation
}

override func viewDidLoad() {
super.viewDidLoad()
self.authWebView.delegate = self
var url = NSURL(string:"http://oauth.vk.com/authorize?client_id=4423823&scope=audio&display=mobile&v=5.21")
var urlRequest = NSMutableURLRequest(URL: url)
self.authWebView.loadRequest(urlRequest)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


func webViewDidFinishLoad(webView:UIWebView) {
NSLog( webView.request!.URL!.absoluteString )
}

}

我也曾尝试实现此方法以在获取 URL 之前检查请求对象是否存在,但它没有帮助。

    func webView(webView: UIWebView!,
shouldStartLoadWithRequest request: NSURLRequest!,
navigationType navigationType: UIWebViewNavigationType) -> Bool {
if !self.authWebView.request {
return false
} else {
return true
}
}

最佳答案

我发现了错误:

某些URL包含特殊字符,例如%@#,用于NSLog中的格式化.如果在字符串中使用了这些字符中的任何一个,则 NSLog 的第一个参数比格式化所需的更多参数要多。

例如

NSLog("http://someurl.com/") // this is fine (no special chars used)

NSLog("http://someurl.com/#somehash?x=%@") // this is not fine (%@ is used in URL, NSLog thinks that I'm formatting the string

var someURLString = "http://someurl.com/#somehash?x=%@"
NSLog("%@", someURLString) // this is fine and the way it has to be done

感谢所有看过我的问题的人!

关于ios - Swift 中的 UIWebView : exc_bad_access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502611/

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