Подтвердить что ты не робот

Доступ к NSUserDefaults Часто

Во время логического процесса в моем приложении мне нужно часто обращаться к пользовательским настройкам и кучу раз 10 ~ 15, чтобы определить, что нужно обрабатывать и как. Пусть этот вопрос не о производительности, а о правильном выполнении.

В настоящее время я делаю [[NSUserDefaults standardUserDefaults] valueForKey:...] каждый раз, когда мне нужно запросить значение. Это верно? Я думаю, что "сохранение" пользовательских настроек по умолчанию в качестве ivar может сократить дополнительную работу, но потом я задаюсь вопросом, не будет ли у этого проблемы проблемы с синхронизацией, например, если пользователь изменяет настройки и обновляется, только если приложение перезапускается (так что объект по умолчанию пользователя воссоздается).

Есть ли лучший способ?

4b9b3361

Ответ 1

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

Класс NSUserDefaults кэширует значения внутри, поэтому поиск выполняется очень быстро. Накладные расходы [NSUserDefaults standardUserDefaults] против переменной экземпляра настолько малы, что вы даже не заметили бы этого, если бы вы сделали это 5 миллионов раз в своем коде.

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

Ответ 2

У вас не будет проблем, если вы сохраните объект по умолчанию для ivar. Обратите внимание, что синглтон и его указатель не будут меняться.

Ответ 3

Знают ли значения в пользовательских значениях по умолчанию во время этого логического процесса?

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

Затем вы можете использовать эти переменные столько раз, сколько захотите, не нажимая на пользовательские значения по умолчанию, каждый раз считывая данные.

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

В плане производительности доступ к нему в 10-15 раз не будет иметь никакого неблагоприятного эффекта. Если вы обращались к нему 10-15 раз в секунду в течение длительного периода времени, тогда вы можете столкнуться с некоторыми проблемами с реагированием.