gpt4 book ai didi

IOS内存和内存管理

转载 作者:行者123 更新时间:2023-11-29 11:59:12 26 4
gpt4 key购买 nike

我是新手,正在学习 IOS 应用程序开发,让我告诉你,我对内存和内存管理<一无所知 。当我在玩 tabViewController 时,我创建了两个选项卡和三个 ViewController 并将它们连接起来 via NavigationalController 并将它们链接为像这样的循环:-

navigationController1

firstViewController -> secondViewController -> thirdViewController -> firstViewController

navigationController2

firstViewController -> secondViewController -> thirdViewController -> firstViewController

并在 Simulator 上运行它们并注意到,一旦我将 ViewControllers 放到堆栈上,内存就会增加 0.1 MB。

enter image description here

然后我在 firstViewController (NavigationController1) 上添加了一个大小为 4.5 MB 的单个图像并运行应用程序突然我注意到内存达到了 66 Mb

enter image description here

当应用程序启动时,当我在堆栈上添加 viewControllers 时,内存以与上次相同的速度增加(.1 MB)我不明白它背后的原因以及整个看到的逻辑是什么?

“对于按钮未显示在 tabBar 中的原因,我深表歉意,tabBar 上有两个标题 Navigation1 和 Navigation2,而且按钮具有推送 View 的方法”

最佳答案

当图像加载到内存中时,它会被解压缩。虽然压缩图像可能不需要超过 4.5 MB 的高分辨率(例如通过保存为 JPEG),但它的未压缩大小可能会高很多。即使 UIImageView 只是屏幕的一部分,甚至不在屏幕上,它仍然需要基于图像原始分辨率的内存量。

另外,这里有一个 View Controller 循环。一旦你从 VC1 -> VC2 -> VC3 -> VC1 你不会得到最后一个 VC1 的原始实例,而是一个新实例,这意味着你将在内存中同时拥有 4 个 View Controller 时间。从 VC3 返回 VC1 应该做的是弹出 View Controller 堆栈,而不是添加另一个 VC1 实例。您可以通过在 VC3 上调用 self.navigationController?.popToRootViewControllerAnimated(true) 来完成此操作。

关于IOS内存和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37761237/

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