Ну, чтобы выпороть мою личную лошадь для хобби, я бы сказал, что настройки - это форма предпочтений, которую следует сохранить в выделенной модели данных. Например, NSUserDefaults - это модель данных, построенная на одноэлементном шаблоне. Вы могли бы, конечно, свернуть свое собственное. Нет проблем с наличием нескольких моделей данных в одном приложении, если они управляют несвязанной информацией.
Ключ заключается в том, чтобы сохранить значения по умолчанию / предпочтения / состояния по мере их создания. Затем, когда приложение завершает работу, настройки по умолчанию уже автоматически сохраняются. Помните, что на iPhone вы никогда не знаете, когда приложение будет прервано или завершено. Сохранить, как вы идете, действительно единственный вариант.
Кроме того, в предоставленных вами примерах кода, как контроллер представления узнает, когда приложение выйдет? IIRC, UIViewController не имеет метода applicationWillTerminate:
и не получает автоматически конкретное приложение, которое закроет сообщение. ( Редактировать: В комментариях KennyTM указывает, что контроллер представления может регистрировать и прослушивать UIApplicationWillTerminateNotification ) Вам нужно будет включить эту функцию в -viewWillUnload
. В противном случае вам придется отслеживать контроллеры представления из делегата приложения, чтобы делегат отправлял активному контроллеру представления сообщение при выходе из приложения.