...应该通过禁用任何适当的控件来防止用户编辑该首选项。
NSUserDefaults 类是线程安全的。NSURL 和文件引用 URL 的持久性...
这个长时间的讨论说它不是
http://www.cocoabuilder.com/archive/cocoa/155227-nsuserdefaults-thread-safety.html
那么哪一个是对的呢?还有为什么意见不同。
...应该通过禁用任何适当的控件来防止用户编辑该首选项。
NSUserDefaults 类是线程安全的。NSURL 和文件引用 URL 的持久性...
这个长时间的讨论说它不是
http://www.cocoabuilder.com/archive/cocoa/155227-nsuserdefaults-thread-safety.html
那么哪一个是对的呢?还有为什么意见不同。
Apple iOS 5.1 和 OS X 10.7 文档说它是线程安全的;因此它是线程安全的。
谈到 10.10 和 iOS8,如果您查看实现,您会发现-[NSUserDefaults setObject:forKey:]
正在调用__CFPreferencesSetAppValueWithContainer
,最终将在+[CFPrefsSource withSourceForIdentifier:user:byHost:container:perform:]
. 此方法使用 apthread_mutex_t
来锁定对包含值的字典的访问。
所以 NSUserDefaults 是线程安全的。