• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - NavigationController 中的循环 - 如何避免内存泄漏?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 22:06:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在我的应用程序中,我有一个带有四个 Controller 的导航 Controller 。用户从 A -> B -> C -> D -> A_1 -> B_2 -> ...等导航。这是一种方式,每个 ViewController 始终是新的 ViewController

这个循环是有意的。但是在 ViewController AC 我初始化了使用大量内存的 GoogleMaps。因此,在 15 次循环(以及 30 次 GoogleMaps 初始化)之后,我的应用程序由于内存泄漏而崩溃。

现在我看到了解决这个问题的不同可能性。

1) 我没有初始化新的 ViewController,而是重用了我的 VC。所以谷歌地图只是初始化了两次。 我不喜欢这样,因为我的 VC 可能有不同的状态。一个干净的初始化会更舒服,错误源也更小

2) 我在正确的时间移除堆栈,因为导航只是一种方式。当 A -> B 的转换完成后,我可以将 A 扔掉。 C -> D也是一样的。

3) 我在转换后取消初始化 Google map 。我还不知道该怎么做,但我很确定我会弄明白的。

我读到了 setViewControllers我可以用它来替换 View Controller 。

最佳做法是什么?苹果有什么推荐?



Best Answer-推荐答案


从第 3 个也是最简单的选项开始:

使用 override func viewWillDisappear(){} 来取消初始化谷歌地图。您也可以将此方法用于第二个选项。

但我认为,当您从 D 回到 A 时,您应该使用委托(delegate)。当您再次到达 A 时,您对 A 有何更改?

关于ios - NavigationController 中的循环 - 如何避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536803/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap