Метод синхронизации nsuserdefaults замедляет работу приложения - PullRequest
1 голос
/ 18 ноября 2011

Я выполняю операцию с интенсивными вычислениями в циклах (сотни для итеративных формул). В каждом цикле значения извлекаются из nsuserdefaults напрямую, вычисляются и сохраняются обратно. Мой вопрос заключается в том, должен ли я использовать метод -synchronize каждый раз, когда я пишу вnsuserdefaults? .Я думаю, не используя этот метод.мое приложение работает намного быстрееЗамедляет ли использование синхронизации вычисления

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

Замедляет ли использование синхронизации вычисления?

Да, абсолютно. synchronize записывает текущие значения пользователя по умолчанию на диск.

я должен использовать метод -synchronize каждый раз, когда пишу в nsuserdefaults?.

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

synchronize обычно делается:

  1. вручную, прежде чем приложение будет закрыто или отправлено в фоновый режим
  2. автоматически системой каждые несколько минут
  3. вручную программой после внесения некоторых важных изменений, которые вы не хотите рисковать в случае сбоя или внезапного отключения питания.

В вашем случае после длинного цикла вы хотите сделать это по причине 3.

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

1 голос
/ 18 ноября 2011

Нет.Теоретически вам никогда не нужно вызывать его вообще, это будет сделано за вас (оно «вызывается автоматически через определенные промежутки времени»).На практике это хорошая идея сделать в applicationWillResignActive:.

1 голос
/ 18 ноября 2011

Нет! Вы не должны. Рассмотрим synchronize в applicationWillTerminate.

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