我是iOS开发的初学者。由于各种原因,我在UIWebView周围创建了一个包装器。现在,它看起来像这样:
class WebV : NSObject, UIWebViewDelegate {
var uiWeb:UIWebView?
convenience init(frame:CGRect) {
self.init()
uiWeb!.frame = frame
}
override init() {
super.init()
uiWeb = UIWebView()
uiWeb!.delegate = self
}
func putUrl(url:String) {
let urlToLoad = NSURLRequest(URL: NSURL(string: "http://localhost:1338/" + url + ".html"))
uiWeb!.loadRequest(urlToLoad)
}
}
然后,在另一堂课中,我这样做:
var webView:WebV!
override func viewDidLoad() {
super.viewDidLoad()
webView = WebV(frame: self.view.frame)
webView.putURL("views/login")
self.view.addSubview(webView.uiWeb!)
}
加载后,我收到EXC_BAD_ACCESS错误。如果我执行其中任何一项操作,我不会收到错误:
uiWeb.delegate
self
。我知道EXC_BAD_ACCESS错误是因为我试图使用未分配的内容,但我正在试图找到什么。 uiWeb
和webView
都是类级变量,因此在函数完成时不应该取消分配它们。
有什么想法在这里发生了什么?这是我用这种方式固有的东西吗?