2014-11-01 5 views
-1

Мне интересно, если это дорогостоящая операция для доступа к данным (строка, bool), хранящимся в NSUserDefaults. Это значительно медленнее, чем доступ к нему один раз и сохранение его в свойстве, а затем использовать его в будущем, получив его из свойства, а не снова получить его от NSUserDefaults? Или различия весьма незначительны? Я знаю, что состояние docs NSUserDefaults кэшировано.Это дорогостоящая операция для доступа к данным, хранящимся в NSUserDefaults?

Ответ, вероятно, зависит от того, как часто вы планируете его получать. Предположим, что это понадобится 20 раз в минуту. Я не буду менять его программно, а только получать текущее значение.

Мне любопытно, потому что одно из преимуществ всегда получать его - вы можете гарантировать, что это текущее значение. Если вы его получите один раз и сохраните, вам необходимо прослушать изменения до NSUserDefaults, а затем обновить значение, сохраненное путем его извлечения.

+1

Эти вещи «UserDefaults»? Если они не принадлежат, создайте класс Data Model и сохраните/восстановите по мере необходимости. – zaph

+0

Что касается производительности, если вы не испытываете проблем с производительностью, вопрос не стоит рассматривать, это называется: преждевременная оптимизация. – zaph

ответ

1

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

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

+0

Полезно знать, спасибо! – Joey

Смежные вопросы