При сохранении значений в NSUserDefaults
:Как предотвратить сообщение журнала «пропуск настройки уже текущее значение для ключевых»
[[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"];
... если значение уже существующих, Xcode 8 зарегистрирует:
2016-07-14 09: 59: 04.081806 MyAppName [52232: 2561291] [Пользовательские настройки] CFPrefsPlistSource < 0x7941d950> (Домен: com.myAppBundle, Пользователь: kCFPreferencesCurrentUser, ByHost: Нет, Контейнер: (null)), текущая стоимость для ключа myKey
1) Могу ли я попросить Xcode не регистрировать это? [главный вопрос]
2) Или я должен сравнивать равенство ранее сохраненных значений перед использованием setValue:forKey:
? [дочерняя вопрос]
Пример:
if (![[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"] isEqual:myValue])
[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"];
3) Или я должен выполнить это сравнение с поточно-замком, чтобы избежать хранения в два раза и то же значение между инструкцией, где я сравниваю и инструкции где Я использую setValue:forKey:
? [дочерняя вопрос]
Пример:
@synchronized ([NSUserDefaults standardUserDefaults]) {
if (![[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"] isEqual:myValue])
[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"];
}