Swift 中的内存管理



所以我有一个导航控制器,它连接到一个视图控制器。从该视图控制器,您可以转到相同类型的视图控制器,但内容不同。视图控制器占用大量内存,因此推送每个新控制器的成本很高。问题是,当我单击后退按钮并弹出视图控制器时,内存不会自行释放。有什么我应该做的事情,比如我不习惯的设置东西等?因为,假设我有 5 张图像要显示,每张图像占用 5-10 MB 的内存,当我在我所在的视图控制器上推送一个新的视图控制器时,我花费了 30-50mbs 的内存,这没关系,但是当我单击"返回"按钮并弹出视图控制器时,我希望释放这 50mb。然而,情况并非如此。有人可以给我一个提示,告诉我应该怎么做才能更有效地管理这个内存吗?

另外,有没有一种很好的方法来释放 UI mageView 在 Swift 中占用的内存?

因此,更准确地说,当视图控制器从导航堆栈弹出时,不会调用视图控制器的 deinit。这同样适用于该视图控制器的某些自定义子视图。我如何确保它们被 ARC 清理,是否有任何工具可以帮助我跟踪将这些内容保存在内存中的引用。

好的,所以我解决了它。给可能遇到相同问题的每个人的快速提示。1)具有所有字段(数字和书籍除外)。在deinit中将它们排除在外。2)删除内存中可以引用对象的所有内容,一个容易忘记的很好的例子是委托。如果您的视图充当委托,请不要忘记断开此连接。3)如果您在应用程序中使用地图,建议使用一张共享地图并每次重新绘制和更改其委托,而不是立即在每个视图上使用它们来创建新地图。地图可能很难从内存中清除(我尝试地图应用内存修复,它不起作用)

相关内容

  • 没有找到相关文章

最新更新