gpt4 book ai didi

ios - 在单个 ViewController 应用程序中,内存保留周期是不可能的吗? ( swift/IOS)

转载 作者:行者123 更新时间:2023-11-28 06:03:32 27 4
gpt4 key购买 nike

我记得在 YouTube 上看过斯坦福大学的 CS193P(是的,我是个聪明人)...有一种叫做内存泄漏或“保留周期”的东西——非常糟糕的东西——当你做这样的事情:

  • 引用自己。在完成 block 内
  • 引用自己。在定时器回调中
  • 引用自己。在 SyncQueue.sync() 方法中
  • 引用自己。在 DispatchQueue.main.async() 方法中

解决方案通常似乎是改用“弱 self ”引用。

我有 104 个这样的异步 self 。我的 ViewController 中的引用,这就是我有点担心的原因。

但是......这个应用程序是一个单页应用程序......以及所有这些 self 。引用指向这个主 ViewController(或其永久 subview 之一),它始终存在,从不被解雇,也从不“从堆栈中弹出”。

我的应用程序似乎运行良好...而且我没有看到总内存使用量出现问题或其他任何情况...那么这是否意味着我可以在这方面保持我的 (ViewController) 代码不变?

感谢您的帮助!

最佳答案

在以下两种情况下,您可能会后悔没有修复代码:

  • 如果您的应用程序在后台运行时设备内存不足,则可以删除 View Controller 及其 View 的某些方面。看到这个(诚然很旧,但仍然很有趣)article .这很容易在未来的 iOS 版本中对您的应用产生更显着的影响,甚至可能甚至现在,这取决于您的代码正在做什么。

  • 提前 6 个月,您或您团队中的其他人正在为另一个应用程序借用您的一些代码。您(或他们)可能会被烧毁。最好现在就修复代码。这些修复不应导致重大重构,但如果您发现一个会导致重大重构,您始终可以在该行插入一个大的警告注释。

关于ios - 在单个 ViewController 应用程序中,内存保留周期是不可能的吗? ( swift/IOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com