更改窗口根视图控制器的效率如何?

时间:2015-03-02 15:16:07

标签: ios swift uiviewcontroller automatic-ref-counting uiwindow

我正在创建一个用户可以登录并注销的应用程序。我检查是否存在已保存的用户(来自早期登录),如果用户已保存,我将该用户登录,然后将窗口的rootviewcontroller更改为登录时应显示的viewcontroller。

// In LoginViewController
let sb = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) // Login viewcontrollers as login, facebook login, register is inside its own storyboard called Login
let vc = sb.instantiateInitialViewController() as MainViewController

let window = UIApplication.sharedApplication().delegate!.window!!

window.rootViewController = vc

但我只是想知道,这有多高效?

这样做会不会正确处理内存?

1 个答案:

答案 0 :(得分:1)

它没有做任何特别的事情。它类似于呈现/解除视图控制器。

  

根视图控制器提供窗口的内容视图。   将视图控制器分配给此属性(以编程方式   或者使用Interface Builder)将视图控制器的视图安装为   窗口的内容视图。如果窗口具有现有视图   层次结构,旧视图在新视图之前被删除   安装。

只要正确处理内存(视图,视图控制器,代理等之间没有保留周期等),它就会正确处理内存。

当然可以使用时间,分配分析工具(@Ian MacDonald suggested)找到详细的数字

关闭主题:对我来说,这是在应用程序的登录/注销状态之间切换的首选方式。我相信这种方法可以简化登录/注销状态之间的屏幕导航:登录后,将root vc更改为数据控制器,忘记登录内容。