Я не знал, что переключение языка приведет к закрытию приложений, но это не шокирует. Это очень простой способ получить то, что хочет пользователь. Однако ваша проблема не в изменении языка. Проблема в том, что вы не отвечаете правильно на уведомление о прекращении. Вас могут уволить в любое время, когда вы находитесь в фоновом режиме, и ваша задача - справиться с этим.
Ваш представитель приложения должен реализовать applicationWillTerminate:
(или вы можете наблюдать UIApplicationWillTerminateNotification
, где это удобно). Когда вы получите это, вы должны сохранить достаточно информации, чтобы вернуться туда, где вы были при перезапуске. Насколько это возможно, вы должны убедить пользователя, что вы не прервали его. Самым простым местом для сохранения состояния обычно является NSUserDefaults
, но вы можете использовать любой понравившийся вам механизм.
Обработка перезапуска приложений - одна из тех вещей, которая отличает превосходные приложения iOS от «достаточно хороших».