我正在尝试在Mac OS应用程序中更改屏幕截图的保存位置,但这似乎不起作用。
在终端中执行以下命令非常有效。所有屏幕截图都保存在名为屏幕截图的文件夹中(位于我的桌面上),与预期一样。
终端
defaults write com.apple.screencapture location ~/Desktop/Screenshots
killall SystemUIServer
每当我让我的应用程序执行以下代码段时,com.apple.screencapture.plist
中的位置值将会改变。
目标C
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.apple.screencapture.plist"];
[defaults setValue:@"/Users/Maarten/Desktop/Screenshots" forKey:@"location"];
[defaults synchronize];
值更改后,我使用终端运行killall SystemUIServer
但不知怎的,这个命令似乎不起作用,因为所有屏幕截图都保存在之前定义的(默认)位置。
答案 0 :(得分:2)
自10.9(我认为)以来,操作系统会缓存您的偏好。要使缓存无效,您需要终止cfprefsd
。因此,首先,通过defaults
设置您的首选项,然后运行以下命令:
killall -u $USER cfprefsd
之后,您的偏好应该在不需要重启或其他任何事情的情况下进行。
此外,您可以使用screencapture
指定特定屏幕截图的位置,而不是更改系统首选项。您也可以使用此工具指定其他参数。使用man screencapture
获取更多信息。
最后,根据Apple的文档,synchronize
对NSUserDefaults
来说非常有用:
<强>同步强>
等待默认数据库的任何挂起的异步更新 并返回;这种方法是不必要的,不应该使用。