当我使用 3D Touch Peek 和 Pop 视图控制器时,我的应用程序UIApplication.shared.delegate?.window??.rootViewController
被 Apple 保留_UIFullScreenPresentationController
因此,如果我切换 rootViewController,则永远不会释放旧的。
我制作了一个演示应用程序来帮助理解: https ://github.com/rapinto/PeekAndPopLeak
重现步骤:
- 3d touch 在根的背景上
ViewController
推一个新的ViewController
. - 按下按钮切换应用程序
rootViewController
- 打开 Debug Memory Graph Xcode 工具:现在有 2 个活
ViewController
- 可选:如果重复步骤 1 到 3,
ViewController
则会泄漏更多
取消注册预览上下文并不能解决它。
任何人都可以帮助我吗?
PS:如果您不偷看并弹出第二个ViewController
,rootViewController
则不会保留/泄漏