Основные данные и сохранение контекста в subViewControllers, хорошо, чтобы выпустить? - PullRequest
1 голос
/ 15 марта 2010

При обновлении managedObjectContext допустимо ли выполнять настройку сохранения в контроллерах представления, которые могут быть освобождены, или appDelegate должен обрабатывать сохранение managedObjectContext, чтобы, даже если viewController был освобожден, сохранение завершалось?

Я склоняюсь к идее перенести шаг сохранения в мой appDelegate и вызвать вызов viewControllers [appDelegate saveContext]; когда обновление выполнено, хотя, возможно, это спорный вопрос, поскольку viewController не завершит выпуск до тех пор, пока не будет сохранено на CD в любом случае ...?

Например, есть ли разница между этими двумя действиями, выполняемыми из subViewController:

[appDelegate.managedObjectContext save:&error]

и

[appDlegate saveContext]

Где в appDelegate есть метод, который запускает [managedObjectContext save: & error]

Спасибо, Сэм

Ответы [ 2 ]

0 голосов
/ 15 марта 2010

Предполагая, что ваше приложение является однопоточным, вы гарантированно завершите сохранение до того, как контроллер представления будет выпущен, потому что поток заблокируется при сохранении.

Если вы используете многопоточное приложение; то

  1. Не следует сохранять в фоновом потоке, который опасен для базовых данных.

  2. Вы не должны получать доступ к контроллеру представления в фоновом потоке, поскольку все связанные с просмотром действия должны выполняться в основном потоке.

Следовательно, не существует «правильной» ситуации, когда вам придется беспокоиться о том, что -save: не завершится, независимо от того, с какого объекта вы его вызываете, потому что это блокирующий вызов.

0 голосов
/ 15 марта 2010

Если вы используете только один managedObjectContext через свое приложение, неплохо было бы сохранить функциональность сохранения в делегате приложения, чтобы независимо от состояния контроллеров представления в течение жизненного цикла приложения, любые обновления были сохранены когда приложение завершается.

При этом я считаю полезным добавить дополнительные точки сохранения, иногда в контроллерах представления, которые будут сохранять базу данных после выполнения значительных обновлений. Таким образом, мои данные будут сохранены даже в случае сбоя приложения или невозможности завершения последней операции сохранения.

Я относительный новичок в Core Data, поэтому, пожалуйста, сообщите мне, если это плохая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...