麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > iOS > 正文

iOS中wkwebView內(nèi)存泄漏與循環(huán)引用問題詳解

2019-10-21 18:40:22
字體:
供稿:網(wǎng)友

前言

現(xiàn)在大多數(shù)網(wǎng)絡(luò)也面加載都會用到wkwebview,之前在使用wkwebview的時(shí)候,網(wǎng)上很多的基礎(chǔ)教程使用很多只是說了怎么添加Message Handler 但是并沒有告訴到家有這個(gè)內(nèi)存泄漏的風(fēng)險(xiǎn),如果你只是也沒內(nèi)的數(shù)據(jù)調(diào)用你壓根都不會發(fā)現(xiàn)這個(gè)問題。沒存泄漏這個(gè)問題說大不大,說小不小,嚴(yán)重的話話直接到時(shí)app閃退,所以還是得重視起。好下面說一下怎么解決,話不多說了,來一起看看詳細(xì)的介紹吧

解決方法

1,在做網(wǎng)頁端js交互的時(shí)候 我們都會這樣去添加js

[self.customWebView.configuration.userContentController addScriptMessageHandler:self name:obj];

后面也添加了 delloc

- (void)dealloc { [_customWebView removeObserver:self forKeyPath:@"estimatedProgress"]; [self removeScriptMessageHandler];}

后來發(fā)現(xiàn)在加載網(wǎng)頁的時(shí)候 pop push 多次操作 內(nèi)存一直在增加,高的時(shí)候 都快200上下了,才注意到這個(gè)內(nèi)存問題,
剛開始的解決方法是:

- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated];  [self removeScriptMessageHandler];}

后來發(fā)現(xiàn)問題依舊存在 delloc 依舊不走,雖然走了移除方法 ,但是在當(dāng)你在pop push時(shí)候 網(wǎng)頁沒有移除掉原先占的內(nèi)存,后來發(fā)現(xiàn)

[userContentController addScriptMessageHandler:self name:GetKeyiOSAndroid_Action];

這里userContentController持有了self ,然后 
userContentController 又被configuration持有,
最終唄webview持有,然后webview是self的一個(gè)私有變量,
所以self也持有self,所以這個(gè)時(shí)候有循環(huán)引用的問題存在,
導(dǎo)致界面被pop或者dismiss之后依然會存在內(nèi)存中。不會被釋放
目前想到2個(gè)辦法

1,上面我提到了 self持有self,導(dǎo)致的循環(huán)引用問題

我做法是重新建了一個(gè)類WKWebViewConfiguration

[[WKWebViewConfiguration alloc]init];   userContentController =[[WKUserContentController alloc]init];       configuration.userContentController= userContentController;   webView = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:configuration];

重寫self方法就解決了

2,delloc 內(nèi)存,

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [_webView.configuration.userContentController addScriptMessageHandler:self name:GetKeyiOSAndroid_Action]; [_webView.configuration.userContentController addScriptMessageHandler:self name:Upload_Action];}- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [_webView.configuration.userContentController removeScriptMessageHandlerForName:GetKeyiOSAndroid_Action]; [_webView.configuration.userContentController removeScriptMessageHandlerForName:Upload_Action];}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久久久久高潮一区二区 | 国产在线中文 | 亚洲午夜1000理论片aa | 成人一区三区 | 久久男 | 777zyz色资源站在线观看 | 大奶一级片 | 久久久久久久91 | 亚洲人成网在线观看 | 99在线在线视频免费视频观看 | 精国产品一区二区三区四季综 | av电影免费在线看 | 国产精品亚洲欧美一级在线 | 北京一级毛片 | a集毛片 | 欧美三级日本三级少妇99 | 国产日韩线路一线路二 | 欧美成人午夜精品久久久 | 男人天堂免费 | 黄色免费在线视频网站 | 日韩欧美激情视频 | av大全在线免费观看 | 国产精品18久久久久久久 | 51国产偷自视频区视频小蝌蚪 | 国产精品毛片无码 | 看黄在线 | 最新av网址在线观看 | 久久伊人国产精品 | 日韩在线毛片 | 日韩在线欧美在线 | h视频免费观看 | 一级做a爱片性色毛片 | 国产一区二区视频在线播放 | 精品国产一区二区三区成人影院 | 精品国产一区三区| 日韩一级成人 | 国产污污视频 | 国产精品久久久久久久久久久天堂 | 国产99久久精品一区二区300 | 嫩草影院在线观看网站成人 | 91看片成人 |