我的应用具有以下布局/流程:
LandingVC :新用户首次运行应用时会看到的页面。此页面将解释该应用程序的用途,并有2个按钮:登录和注册
LoginVC :用户将使用他/她的电子邮件和密码登录
RegisterVC :用户将使用他/她的电子邮件和密码注册
MainVC :标签栏视图控制器,用户将在以下情况下重定向:
如果用户未登录,则应将其重定向到LandingVC。
我处理它的方式如下:
在appDelegate.swift中,我检查用户是否已登录。
如果用户已登录,我将 MainVC 设置为根控制器。
如果用户未登录,则我将 LandingVC 设置为根控制器。
问题A: 一切正常,但由于我对iOS开发还不熟悉,我担心如果我在内存消耗和代码效率方面提出/推送/解除ViewControllers的方式是正确的。你怎么看?我是弄错了还是我走在正确的道路上?
为了测量它,我按照以下步骤进行:
使用 iPhone X 在 iOS模拟器中运行应用。用户最初未登录,因此我使用相同的流量 3次:LandingVC - > LoginVC - > MainVC。
结果如下:
ps1:为了得到结果,我在xCode中使用了“ Debug Navigator ”标签。
为了验证在整个流程中没有ViewController被解除,我使用了“View Memory Graph Hierarchy”:
正如您所看到的,我浏览的每个ViewController都有3个实例(顺便说一句,MainVC是MainTabBarController,它由HomeViewController,FavouritesViewController,TrendingViewController和SettingsViewController组成)。
问题B: 有没有办法可以从内存中释放[remove / pop / dismiss / etc] ViewControllers但仍然有相同的结果?
问题C: 在该流程之后,内存从55.4 MB增加到68.1 MB是否正常?
ps2:所有UI都是以编程方式构建的。没有故事板。
提前致谢并对这篇长篇文章感到抱歉。