Objective c 我可以在任意应用程序上使用CFPreferencesAppSynchronize吗?
我有一个我正在开发的小实用程序,它将plist文件复制到Dropbox,这样我就可以在两台计算机上同步plist文件。在10.9中,对首选项的更改被缓存并仅写入磁盘 我是否可以使用CFPreferencesAppSynchronize告诉系统将任意应用程序的新存在写入磁盘?例如,如果我想同步我的finder首选项,我可以让我的小应用程序调用CFPreferencesAppSynchronize与finder(com.apple.finder)同步吗?下面的代码似乎不起作用,但不会引发错误:Objective c 我可以在任意应用程序上使用CFPreferencesAppSynchronize吗?,objective-c,macos,cfpreferences,Objective C,Macos,Cfpreferences,我有一个我正在开发的小实用程序,它将plist文件复制到Dropbox,这样我就可以在两台计算机上同步plist文件。在10.9中,对首选项的更改被缓存并仅写入磁盘 我是否可以使用CFPreferencesAppSynchronize告诉系统将任意应用程序的新存在写入磁盘?例如,如果我想同步我的finder首选项,我可以让我的小应用程序调用CFPreferencesAppSynchronize与finder(com.apple.finder)同步吗?下面的代码似乎不起作用,但不会引发错误: #i
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here..
NSString *stringApplicationID = @"com.apple.finder";
CFStringRef applicationIDfinder = (__bridge CFStringRef)stringApplicationID;
Boolean CFPreferencesSynchronize (
CFStringRef applicationIDfinder,
CFStringRef kCFPreferencesAnyUser,
CFStringRef kCFPreferencesAnyHost
);
return 0;
}
}
#导入
int main(int argc,const char*argv[]{
@自动释放池{
//在此处插入代码。。
NSString*stringApplicationID=@“com.apple.finder”;
CFStringRef应用程序ID=(u桥CFStringRef)stringApplicationID;
布尔CFPreferencesSynchronize(
CFStringRef应用程序文件夹,
CFStringRef kCFPreferencesAnyUser,
CFStringRef kCFPreferencesAnyHost
);
返回0;
}
}
实际上,更改发生在10.8中,而不是10.9中(尽管它在10.9中进一步更改)。没有可靠的方法来操作或与磁盘上的plist交互,它们只是preferences系统的一个实现细节
如果您想同步它们,我的建议是读取首选项并使用NSPropertyListSerialization将它们写入dropbox同步位置。然后在连接的另一端,自己阅读并在CFPreferences中设置它们