更改 window root viewcontroller 的效率如何?

How efficient is changing window root viewcontroller?

我正在制作一个用户可以登录和注销的应用程序。我检查是否存在已保存的用户(来自较早的登录),如果保存了用户,我会将该用户登录,然后将 window 的 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

但我只是想知道,这效率如何?

这样做是否能正确处理内存?

它没有做任何特别的事情。它类似于 presenting/dismissing 视图控制器。

The root view controller provides the content view of the window. Assigning a view controller to this property (either programmatically or using Interface Builder) installs the view controller’s view as the content view of the window. If the window has an existing view hierarchy, the old views are removed before the new ones are installed.

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

当然可以使用时间、分配分析工具找到详细数字(如

有点偏离主题:对我来说,这是在应用程序的 logged-in/logged-out 状态之间切换的首选方式。我相信这种方法可以简化 logged-in/logged-out 状态之间的屏幕导航:登录后,您将根 vc 更改为您的数据控制器并忘记登录内容。