ViewControllers,内存消耗和代码效率
我的应用程序具有以下布局/流程:
LandingVC :新用户首次运行应用时将看到的页面。 此页面将解释该应用程序的用途,并有2个按钮:登录和注册
LoginVC :用户将使用他/她的电子邮件和密码登录
RegisterVC :用户将使用他/她的电子邮件和密码进行注册
MainVC :标签栏视图控制器,在以下情况下将重定向用户:
- 用户首次成功注册
- 用户成功登录
- 用户已登录
如果用户未登录,则应将其重定向到LandingVC。
我处理它的方式如下:
在appDelegate.swift中,我检查用户是否登录。
如果用户已登录,我将MainVC设置为根控制器 。
如果用户未登录,则将LandingVC设置为根控制器 。
问题A:一切都运行得很好,但由于我对iOS开发还不熟悉,我担心如果我在内存消耗和代码效率方面提出/推送/解除ViewControllers的方式是正确的。 你怎么看? 我是弄错了还是我走在正确的道路上?
为了衡量它,我按照以下程序:
使用iPhone X在iOS模拟器中运行应用程序。 用户最初没有登录,因此我使用了相同的流程3次 :LandingVC – > LoginVC – > MainVC。
结果如下:
ps1:为了得到结果我在xCode中使用了“ Debug Navigator ”选项卡。
为了validation在整个流程中没有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都是以编程方式构建的。 没有故事板。
在此先感谢,并为长篇文章感到抱歉。
- ios将NSString与特殊字符转换为const char
- 苹果和条纹:商家ID /苹果支付证书在xcode中看不到
- 在应用程序运行时replace核心数据sqlite文件,数据不会更新
- FOR命令中的expression式(for(int i = 0; i <( -1); i ++){})
- NSInvalidArgumentException原因:“Storyboard不包含带有标识符”CenterViewController“的视图控制器
- iOS通过UIWebView访问Safari Readerfunction
- animationBezier曲线的一个点
- iPhone 5s SpriteKit绘图怪异
- 如何调整基于textview的表格单元格?