【发布时间】:2015-04-08 10:23:36
【问题描述】:
我正在尝试构建一个支持用户登录/注销的应用程序。
当应用程序启动时,我检查用户是否已经登录,如果是,我将直接转到主应用程序,这是一个基于标签栏的视图;如果没有,我将转到登录视图,然后在用户成功登录后对主应用程序执行 segue。这些工作正常。
问题与用户注销时有关。用户退出有两种情况:
- 如果用户在本次使用app的过程中已经到过登录界面,我可以直接执行unwind segue,从我在deinit()中添加的日志显示,主app中的所有视图控制器都被释放从记忆里。
- 如果用户从未进入过登录屏幕(这意味着当他们启动应用程序时他们已经登录,因此主应用程序直接显示而没有登录视图),那么问题就来了:如果我直接执行 segue 登录屏幕和用户再次登录,将创建另一个“新”主应用程序。由于未释放“旧”主应用程序视图,因此“新”主应用程序视图实际上使内存加倍。那么在这种情况下,如何在用户注销后正确释放所有现有的主应用视图控制器?
【问题讨论】:
-
你怎么知道你要去“新”的主应用程序视图?而且,内存实际上是如何翻倍的?你为什么不从登录屏幕回到原来的主屏幕?你真的把它放在仪器下,观察你的内存使用情况,看看它是从哪里来的,还是你在猜测?
-
是的。我一直在监控内存使用情况,每当我从登录屏幕再次登录时,似乎再次创建了主应用程序视图,并且随着我不断注销和登录,我可以看到内存使用量在增加