繁体   English   中英

SwiftUI - 导航视图是否存在已知的内存泄漏问题?

[英]SwiftUI - Is there a known memory leak issue with Navigation View?

似乎当我创建一个视图模型并添加一个 deinit 方法时,当该视图在屏幕上不再可见时,它不会被调用。

请参阅说明这一点的附加项目。

运行项目,点击登录按钮,您应该会看到一条控制台消息“de init not logging in view view model”,这种行为是正确的,因为该视图不再可见,因此关联的视图模型被取消初始化。

但是,现在按下屏幕上的“注销”按钮,这次您将看不到 de init 消息,因为登录的视图模型似乎仍在某处,但是如果您再次按下登录,您将看到2x 消息,因此只有在重新初始化登录的视图模型时,它才会取消初始化前一个,实际上它应该已经取消初始化。

如果我删除登录视图上的 NavigationView 包装器,那么它会按预期工作,所以我认为导航视图包装器中存在错误? 还是我做错了什么?

在这里下载测试 Xcode 项目,因为它太复杂而无法截图,如果你运行它并查看它会更容易。 下载测试 Xcode 项目

我发现如果你使用

NavigationView { }.navigationViewStyle(StackNavigationViewStyle())

它将解决 Apple 所说的关于StackNavigationViewStyle内存泄漏

StackNavigationViewStyle() :由一次仅显示一个顶视图的视图堆栈表示的导航视图样式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM