如何防止日志消息 "skipping setting already-present value for key"
How to prevent log message "skipping setting already-present value for key"
在 NSUserDefaults
中存储值时:
[[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"];
...如果值已经存在,Xcode 8 将记录:
2016-07-14 09:59:04.081806 MyAppName[52232:2561291] [User Defaults] CFPrefsPlistSource<0x7941d950> (Domain: com.myAppBundle, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null)) skipping setting already-present value for key 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"];
}
问题仅出现在 Beta 1 和 Beta 2 中。已修复 Xcode 8 beta 3:
When debugging applications in the Simulator, the OS will not produce an excessive amount of
unhelpful logging. (26652255)
此外,可以通过编辑每个方案并添加特定环境变量 OS_ACTIVITY_MODE
到 disable
来删除更多日志记录:
在 NSUserDefaults
中存储值时:
[[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"];
...如果值已经存在,Xcode 8 将记录:
2016-07-14 09:59:04.081806 MyAppName[52232:2561291] [User Defaults] CFPrefsPlistSource<0x7941d950> (Domain: com.myAppBundle, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null)) skipping setting already-present value for key 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"];
}
问题仅出现在 Beta 1 和 Beta 2 中。已修复 Xcode 8 beta 3:
When debugging applications in the Simulator, the OS will not produce an excessive amount of unhelpful logging. (26652255)
此外,可以通过编辑每个方案并添加特定环境变量 OS_ACTIVITY_MODE
到 disable
来删除更多日志记录: