Xib 中创建WKWebView导致Memory Leak异常

问题

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


Instruments Leaks 截屏
Xcode Debug Memory Graph 截屏
分析

通过 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 中创建。可能是苹果没有优化,才会出现这种问题。

你可能感兴趣的:(Xib 中创建WKWebView导致Memory Leak异常)