ViewControllers,内存消耗和代码效率

时间:2018-06-14 14:42:38

标签: ios swift xcode memory-management uiviewcontroller

我的应用具有以下布局/流程:

enter image description here

LandingVC :新用户首次运行应用时会看到的页面。此页面将解释该应用程序的用途,并有2个按钮:登录和注册

LoginVC :用户将使用他/她的电子邮件和密码登录

RegisterVC :用户将使用他/她的电子邮件和密码注册

MainVC :标签栏视图控制器,用户将在以下情况下重定向:

  • 用户首次成功注册
  • 用户成功登录
  • 用户已登录

如果用户未登录,则应将其重定向到LandingVC。

我处理它的方式如下:

在appDelegate.swift中,我检查用户是否已登录。

enter image description here

如果用户已登录,我将 MainVC 设置为根控制器

如果用户未登录,则我将 LandingVC 设置为根控制器

问题A: 一切正常,但由于我对iOS开发还不熟悉,我担心如果我在内存消耗和代码效率方面提出/推送/解除ViewControllers的方式是正确的。你怎么看?我是弄错了还是我走在正确的道路上?

为了测量它,我按照以下步骤进行:

使用 iPhone X iOS模拟器中运行应用。用户最初未登录,因此我使用相同的流量 3次:LandingVC - > LoginVC - > MainVC。

结果如下:

enter image description here

ps1:为了得到结果,我在xCode中使用了“ Debug Navigator ”标签。

enter image description here

为了验证在整个流程中没有ViewController被解除,我使用了“View Memory Graph Hierarchy”:

enter image description here

正如您所看到的,我浏览的每个ViewController都有3个实例(顺便说一句,MainVC是MainTabBarController,它由HomeViewController,FavouritesViewController,TrendingViewController和SettingsViewController组成)。

问题B: 有没有办法可以从内存中释放[remove / pop / dismiss / etc] ViewControllers但仍然有相同的结果?

问题C: 在该流程之后,内存从55.4 MB增加到68.1 MB是否正常?

ps2:所有UI都是以编程方式构建的。没有故事板。

提前致谢并对这篇长篇文章感到抱歉。

0 个答案:

没有答案