Когда должны быть записаны значения NSUserDefault? У меня есть несколько значений по умолчанию, которые могут меняться в течение всего срока действия программы. Должен ли я записывать значения по умолчанию сразу после их изменения или я должен дождаться окончания, когда приложение будет завершено, записать значения по умолчанию обратно?Когда писать в NSUserDefaults?
ответ
Задайте новые значения NSUserDefaults непосредственно после изменения значения. NSUserDefaults сохраняет свои данные в памяти. Таким образом, письмо, скорее всего, будет достаточно быстрым.
Просто убедитесь, что вы не вызываете synchronize
вручную. synchronize
записывает сохраненные значения по умолчанию на диск, поэтому это будет относительно медленно.
Время от времени система вызывается synchronize
, например, когда приложение переходит в фоновый режим.
Но будьте осторожны, чтобы вы * дозвонили синхронизацию до закрытия приложения, иначе ни одно из ваших изменений не будет сохранено. – WendiKidd
Давайте посмотрим на документацию на Яблоки. [ 'Synchronized'] (https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/synchronize) : «Поскольку этот метод автоматически вызывается с периодическими интервалами, используйте этот метод только в том случае, если вы не можете дождаться автоматической синхронизации (например, если ваше приложение собирается выйти) или если вы хотите обновить пользовательские значения по умолчанию на том, что находится на диске даже если вы не внесли никаких изменений ». –
", если вы не можете дождаться автоматической синхронизации (например, если ваше приложение собирается выйти)« Это то, что я имел в виду. Если я что-то не понимаю, так как мы не знаем, когда появятся эти «периодические интервалы», вы должны обязательно позвонить ему до выхода приложения, не так ли? (Если я ошибаюсь, пожалуйста, поправьте меня, это значит, что я делал это неправильно.) – WendiKidd
- 1. Неужели плохо читать или писать в NSUserDefaults в узком цикле?
- 2. Когда писать плагин jQuery?
- 3. Когда писать итератор?
- 4. Невозможно прочитать NSUserDefaults группы приложений, но умеет писать на нем
- 5. Когда писать на моем db
- 6. ли NSUserDefaults сбрасывается, когда пользователь обновляет
- 7. Случайная потеря данных (NSUserDefaults), когда popToRootViewControllerAnimated
- 8. Когда переменные, сохраненные как NSUserDefaults, будут выпущены?
- 9. Как принудительно удалить NSUserDefaults, когда приложение обновлено?
- 10. Кэш обратной записи в Java, когда писать
- 11. Как эффективно писать подобные коды в xcode?
- 12. NSUserDefaults в Mac Применение
- 13. Сохранение NSTimer в NSUserDefaults
- 14. Сравнение текущих значений NSUserDefaults с предыдущими NSUserDefaults?
- 15. Добавление в NSUserDefaults - новичок
- 16. Обнаруживать изменения в NSUserDefaults
- 17. NSUserDefaults registerDefaults в Swift
- 18. Сохранение UIImage в NSUserDefaults
- 19. Сохранение NSCountedSet в NSUserDefaults
- 20. NSUserDefaults изменяет
- 21. Использование NSUserDefaults
- 22. NSUserDefaults сохранение
- 23. Сохранение в NSUserDefaults
- 24. NSUserDefaults ненадежный?
- 25. Настройка NSUserDefaults
- 26. NSMutableArray в NSUserDefaults
- 27. Убрано NSUserDefaults
- 28. NSUserDefaults сбрасывается
- 29. NSUserDefaults removeObjectForKey
- 30. NSUserdefaults Persistance
Это зависит от того, какие (и насколько) данные находятся в этих значениях по умолчанию. Много ли данных (обычно этого не будет)? Какое последствие (и вероятность), что приложение выйдет из строя, прежде чем вы получите возможность написать NSUserDefaults? Кроме того, вы можете уточнить, что вы подразумеваете под «write». Вы спрашиваете о вызове 'setObject: forKey:' или фактически сохраняете данные с вызовом 'synchronize'? – Nate
Количество данных: 2-3 относительно небольшой массив (менее 10 объектов), 5 или около того ints/booleans. Я не ожидаю, что приложение выйдет из строя (если только это не ошибка программирования). Я прошу о вызове setObject: forKey: – user1802143
user1802143 Вы никогда не ожидаете * производственной версии приложения для сбоя. Иногда это происходит в любом случае. @Nate поднимает некоторые хорошие моменты, особенно re: severity. Если сохранение значения не приводит к изменению баланса банковского счета пользователя, это проблема. Если это означает, что они должны сбросить время на часах, возможно, не так много. – WendiKidd