Редактировать: Первый (основанный на уведомлениях) подход, вероятно, не будет работать из-за внутренней работы циклов выполнения и уведомлений.
Если вы хотите придерживаться архитектуры, основанной на уведомлениях, вы на самом деле можете публиковать свои собственные уведомления из applicationWillTerminate:
. Просто создайте свое собственное MyApplicationWillTerminate
уведомление, а затем позвоните postNotification:
на [NSNotificationCenter defaultCenter]
. Затем зарегистрируйте контроллер редактирования для экземпляров MyApplicationWillTerminate
вместо значения по умолчанию UIApplicationWillTerminateNotification
.
Другой вариант - попросить делегата приложения сохранить экземпляр вашего контроллера редактирования, если он видим, а затем в applicationWillTerminate:
сохранить новую информацию перед выпуском контекста Core Data. Однако это загрязняет делегат приложения дополнительными переменными экземпляра, поэтому может оказаться неоптимальным решением.
Последняя мысль: почему бы не сохранить приложение, какие бы изменения ни делались, когда пользователь их вносит? Таким образом, вам не нужно беспокоиться о закрытии приложения на полпути после редактирования фрагмента информации - изменения уже сохранены, и вы можете просто выпустить материал Core Data, как вы уже сделали. (Это может не подходить для вас; я действительно не могу сказать, не зная больше о структуре вашего приложения и о том, какие данные вы редактируете.)