如何管理实例化的 viewController
How to manage instantiated viewControllers
总而言之,管理 VC 的最佳方式是什么?
就我而言,我的游戏中有 3 个 VC。要在它们之间切换,当前 VC 中的按钮会激活以下代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier:"firstLevel")
self.present(viewController, animated: false, completion: nil)
此代码有效,但每次它实例化一个新的 VC 时,当存在相同 VC 的两个副本时,这会导致我的游戏出现全局变量问题,例如 "Score"我假设这对记忆力也很不利。
这个问题的最佳解决方案是什么?
我是否应该在实例化下一个 VC 之后通过放置以下代码行来关闭当前 viewController?:
self.dismissViewControllerAnimated(false, completion: nil)
您只需要 1 个 vc 替换 rootViewController
let viewController = storyboard!.instantiateViewController(withIdentifier:"firstLevel")
(UIApplication.shared.delegate as! AppDelegate).window!.rootViewController = viewController
因为您当前的代码在堆栈中留下了旧的 vcs,这肯定会导致内存问题
总而言之,管理 VC 的最佳方式是什么?
就我而言,我的游戏中有 3 个 VC。要在它们之间切换,当前 VC 中的按钮会激活以下代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier:"firstLevel")
self.present(viewController, animated: false, completion: nil)
此代码有效,但每次它实例化一个新的 VC 时,当存在相同 VC 的两个副本时,这会导致我的游戏出现全局变量问题,例如 "Score"我假设这对记忆力也很不利。
这个问题的最佳解决方案是什么?
我是否应该在实例化下一个 VC 之后通过放置以下代码行来关闭当前 viewController?:
self.dismissViewControllerAnimated(false, completion: nil)
您只需要 1 个 vc 替换 rootViewController
let viewController = storyboard!.instantiateViewController(withIdentifier:"firstLevel")
(UIApplication.shared.delegate as! AppDelegate).window!.rootViewController = viewController
因为您当前的代码在堆栈中留下了旧的 vcs,这肯定会导致内存问题