我在我的应用程序中实现了一个单例,但是当我在视图控制器之间切换时遇到了问题。
我的应用程序从一个视图控制器 MainMenu 开始,然后在选择菜单时切换到 Game 视图控制器。我在 Game VC 中有一个单例类,它是游戏的对象管理器(称为 World)。它根据 MainMenu 中的菜单选择加载内容。我可以加载并退出 MainMenu VC。单身人士工作正常。当我再次从 MainMenu 中选择(从 MainMenu VC 到 Game VC)时,我的应用程序崩溃导致 NSAssert 阻止单例 World 再次分配,这是有意的。
如何在不尝试重新初始化我的单例的情况下切换回 Game VC?
本质上,我想跳过[[world alloc] init]
我的 Game VC 的 init 方法中的行。我无法弄清楚如何正确地做到这一点......它需要能够在第一次(当 World 不存在时)或任何后续时间(当 World 已经作为单例存在时)被处理。我已经尝试过if (!world)
了,但这不起作用。
这也引出了一个问题……我是否在正确的地方实现了我的单例?我应该把它放在 MainMenu 中吗?我只是想避免当我在两个 VC 之间切换时尝试重新初始化/重新分配单例。
如果这有帮助,我将通过使用[self.view removeFromSuperview];
是否应该以不同的方式退出 Game VC?