问题
今天在测试 App 内存泄漏时,发现所有展示网页的画面都出现了错误,如下图:


分析
通过 Instruments Leaks 和 Xcode Debug Memory Graph 工具可以看出是系统框架WebKit
出现了内存泄漏。
因为Call Tree勾选了“Hide System Libraries”也没有隐藏该错误,所以分析这个应该是可以被解决的。
于是分析了之前版本与当前版本中对应画面有何不同:
以前版本:WKWebView
通过代码创建,测试内存泄漏时正常;
当前版本:WKWebView
通过Xib创建,测试内存泄漏时异常。
解决方案与结果
通过删除 Xib 中的WKWebView
控件,使用纯代码形式创建WKWebView
后,通过了Instruments Leaks 的测试。

Tips: Xcode 中 iOS 11以下
WKWebView
是不能在 Xib 或 Storyboard 中创建的,iOS 11及以上才能在 Xib 或 Storyboard 中创建。可能是苹果没有优化,才会出现这种问题。
网友评论