我不知道在哪里定义 removeFromSuperview () 用于使用 viewDidLoad 实现 addSubview 时的内存泄漏对策



尽管self.view.addSubview(webView(是在viewDidLoad中实现的,但发生内存泄漏是因为addSubview是为了显示Viewcontroller而执行的。因此,我正在考虑通过添加removeFromeSuperview((来消除内存泄漏,但是由于屏幕通过侧菜单过渡,因此视图控制器是循环的,并且无法实现诸如在过渡时删除视图控制器之类的实现。有什么办法吗? 我把代码放在参考。

import UIKit
import SideMenu
import WebKit
class MainViewController: UIViewController, UINavigationBarDelegate, WKNavigationDelegate, WKUIDelegate{
@IBOutlet weak var navigationBar: UINavigationBar!
let homeUrl = "https://www.apple.com/"
let configuration = WKWebViewConfiguration()
let processPool = WKProcessPool()
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
navigationBar.delegate = self

configuration.processPool = processPool
self.webView = WKWebView(frame: CGRect(x: 0, y: 85, width:self.view.bounds.width, height: self.view.bounds.height-85), configuration: configuration)
self.view.addSubview(webView)
openUrl(urlString: homeUrl)
self.webView.navigationDelegate = self
}
func openUrl(urlString: String) {
let url = URL(string: urlString)
let urlRequest = URLRequest(url: url!)
self.webView.load(urlRequest)
print("open")
} 
}

原来"viewWillDisappear"和"viewDidDisappear"不能在侧边菜单中使用,所以我放弃了侧边菜单,使用基本的导航菜单解决了它。

最新更新