Я бы не советовал делать контроллер представления синглтоном исключительно для некоторого общего состояния или свойства модели. Контроллеры представлений имеют свои собственные шаблоны жизненного цикла (например, созданные из сцен раскадровки, выпущенные после их закрытия, воссозданные при повторном представлении и т. Д. c.), И у вас могут возникнуть проблемы, возникающие при работе с отдельными экземплярами вашего представления controller (s).
Вместо этого не пытайтесь бороться со жизненным циклом стандартного контроллера представления, а просто переместите это свойство в отдельный объект, например
final class StateManager {
static let shared = StateManager()
var switcheroo = 0
private init() { }
}
Тогда ваше представление контроллеры могут использовать это:
class ViewController: UIViewController {
...
func examineSwitcheroo() {
print(StateManager.shared.switcheroo)
}
func updateSwitcheroo(to value: Int) {
StateManager.shared.switcheroo = value
}
}
Таким образом, вы наслаждаетесь этим общим состоянием, не путая нормальные жизненные циклы контроллера представления в этом процессе.
Теперь, какое правильное имя для этого синглтона, StateManager
в моем примере полностью зависит от того, что это общее свойство. Но недостаточно информации о том, что на самом деле этот switcheroo
объект может предложить лучший совет по этому вопросу.
И, вероятно, само собой разумеется, это отдельный вопрос относительно того, следует ли вам вообще использовать синглеты вообще для переменных состояния и объектов модели, но это выходит за рамки этого вопроса.