...应禁止用户通过禁用任何内容来编辑该首选项 适当的控制。
NSUserDefaults类是线程安全的。 NSURL的持久性和 文件参考网址......
这个长时间的讨论说它不是
http://www.cocoabuilder.com/archive/cocoa/155227-nsuserdefaults-thread-safety.html
那么哪一个是对的?也是为什么意见分歧。
答案 0 :(得分:63)
Apple iOS 5.1和OS X 10.7文档说它是线程安全的;因此它是线程安全的。
答案 1 :(得分:38)
对于10.10和iOS8,如果您查看实施内容,您会发现-[NSUserDefaults setObject:forKey:]
正在调用__CFPreferencesSetAppValueWithContainer
,最终会以+[CFPrefsSource withSourceForIdentifier:user:byHost:container:perform:]
结尾。此方法使用pthread_mutex_t
来锁定对包含值的字典的访问。
所以NSUserDefaults是线程安全的。