【发布时间】:2018-07-22 06:29:08
【问题描述】:
我正在制作可以玩 1~30 个关卡的游戏应用。当您进入下一阶段时,我使用此代码
var stageViewController: StageBaseViewController?
switch stageNumber {
case 1:
stageViewController = Stage02Controller()
case 2:
stageViewController = Stage03Controller()
case 3:
stageViewController = Stage04Controller()
...
case 29:
stageViewController = Stage30Controller()
default:
print("error: unknown stage number.")
}
self.navigationController?.pushViewController(stageViewController!, animated: true)
但是如果你连续玩一些阶段,就会导致内存泄漏。 我怎样才能避免这个问题?
*更新
这个应用的ViewController过渡是
A < B < C(gamestage)
我尝试像这样设置 ViewControllers
self.navigationController?.setViewControllers([aVC, bVC, cVC], animated: true)
但是旧的 cVC 的 deinit 不起作用。所以我试图通过这段代码删除旧的 VC
self.navigationController?.viewControllers.removeLast()
但是 self.navigationController?.viewControllers 是 nil。
当我设置 3 个 VC 时,没有调用 deinit,因此增加了内存。 但是只设置了1个VC(cVC),调用了deinit。 我该如何解决这个问题?
【问题讨论】:
标签: ios swift xcode memory-leaks