gre*_*reg 10 macos cocoa sandbox nsuserdefaults
我正在尝试追踪沙盒创建过程中出现的一些问题.在多种情况下,似乎未在Data/Library/Preferences中创建NSUserDefaults .plist文件.我在调试器中以及从Applications目录启动应用程序时已经看到了这一点.我没有尝试存档,签署应用程序然后启动.这需要吗?
创建以.LSSharedFileList.plist结尾的别名文件,但它指向自身,因此不存在.
我不知道它是否相关但是控制台报告:
appleeventsd[72]: <rdar://problem/11489077> A sandboxed application with pid ... checked in with appleeventsd, but its code signature could not be validated ( either because it was corrupt, or could not be read by appleeventsd ) and so it cannot receive AppleEvents targeted by name, bundle id, or signature. Error=ERROR: #100013 { "NSDescription"="SecCodeCopySigningInformation() returned 100013, -." } (handleMessage()/appleEventsD.cp #2072) client-reqs-q
Run Code Online (Sandbox Code Playgroud)
谢谢.
cac*_*cau 17
这可能与缓存有关NSUserDefaults吗?
在最近的OS X版本中,默认值不会立即写入磁盘,因此您可能无法立即看到它们.您可能想尝试手动同步prefs - 来自NSUserDefaults类参考:
在运行时,您使用NSUserDefaults对象从用户的默认数据库中读取应用程序使用的默认值.NSUserDefaults缓存信息以避免每次需要默认值时都必须打开用户的默认数据库.synchronize方法(定期自动调用)使内存缓存与用户的默认数据库保持同步.
虽然我相信甚至可能不会立即将默认值写入10.9中的磁盘,因为现在还涉及一些缓存用户默认值的守护进程.
检查一下
Objective-C NSUserDefaults缓存可防止其他应用程序准确读取更改
只需将其转换为完整答案,就不会错过.我只是在尝试其他解决方案后才阅读它,只需点击几下即可解决此问题.
@greg和@mehals在评论部分回答第一个解决方案为我解决了这个问题,而无需更改任何代码
杀死cfprefsd完成了活动经理的伎俩.