用户注销后如何正确释放ViewControllers?

时间:2015-04-08 10:23:36

标签: ios swift memory

我正在尝试构建支持用户登录/注销的应用程序。

当应用程序启动时,我检查用户是否已经登录,如果是,我将直接转到主应用程序,这是一个基于标签栏的视图;如果没有,我将进入登录视图,然后在用户成功登录后执行segue到主应用程序。这些工作得很好。

当用户注销时,问题就出现了。用户注销时有两种情况:

  1. 如果用户已经在这段时间内访问过登录界面,我可以直接执行展开segue,并在deinit()里面添加的日志中显示,所有的视图控制器都在主应用程序从内存中释放。
  2. 如果用户从未访问过登录界面(这意味着当他们启动应用程序时他们已经登录,所以主应用程序直接显示没有登录视图),问题出现了:如果我直接执行segue登录屏幕和用户再次登录,另一个'新'将创建主应用程序。自从'老''主要的应用视图未发布,新的'主应用程序视图实际上使内存翻倍。那么在这种情况下,如何在用户注销后正确释放所有现有的主应用程序视图控制器?

1 个答案:

答案 0 :(得分:0)

从登录窗口,你应该检查你是如何到达那里的。如果登录窗口是层次结构的根,则显示主视图。如果用户已登录然后注销,则在下次登录时您只需隐藏登录窗口并返回已加载的主视图并根据新用户更新其内容。这种方法不会生成不必要的主视图