В настоящее время я пытаюсь построить игру с UIkit, которая состоит из трех MVC (на данный момент): основной класс делегата приложения (со свойством UINavigationController), класс меню (UIViewController с файлом xib) и класс игрового контента (также UIViewController с XIB-файлом). Очевидно, что в игре нужны методы для загрузки игрового состояния, подготовки к игре, приостановки игры и сохранения игрового состояния. ИМХО, эти методы относятся к игровому контенту MVC, поэтому я их и положил туда.
Теперь все понятно, когда процесс плоский: приложение запускается, контроллер навигации инициализируется, появляется всплывающее меню, вы нажимаете кнопку, игра запускается. Но я пытаюсь понять, как справиться с ситуацией, когда игровое приложение входит в фоновый режим или завершает работу. Я вижу эти хорошие методы, такие как «applicationDidBecomeActive», «applicationWillResignActive», «applicationWillTerminate», в основном файле класса делегата приложения, и я считаю, что моя архитектура игрового приложения должна быть спроектирована таким образом, чтобы использовать эти методы для подготовки игры. Каково ваше мнение, нужно ли мне иметь свойство (указывающее на класс игрового контента) в классе делегата основного приложения, чтобы получить доступ к методам подготовки к игре? Или я должен изменить дизайн моего игрового контента MVC?
Обновление: мой класс игрового контента выделяется, инициализируется и присваивается основному свойству игрового приложения (для приостановки, сохранения состояния и т. Д. В applicationWillResignActive, applicationDidBecomeActive ...). Основные методы класса делегата приложения будут обрабатывать все подготовительные материалы. Кроме того, мой класс меню также указывает (имеет свойство) на тот же объект игрового контента, потому что у меня есть кнопки «новая игра», «возобновить игру» в меню. Теперь, как мне перезапустить игру из главного меню кнопкой «Новая игра»? Я хотел бы «удалить» объект игрового контента и затем выделить / инициализировать новый. Но проблема в том, что если я освобождаю старый и размещаю / инициализирую новый объект игрового контента из класса меню (и назначаю свойство класса меню), то как я могу передать ссылку на этот объект в основной класс делегата приложения? ? Должен ли я иметь указатель на основной объект делегата приложения из моего свойства объекта меню? Я полагаю, что игровой контент должен быть похож на одиночный ...