我写了一个Mac应用程序,可以将桌面图标变为可见/不可见。我使用NSTask
运行终端命令来重置Finder
:
- (void)killFinder
{
NSTask *killFinderTask = [[NSTask alloc]init];
NSArray *killFinderArray = [NSArray arrayWithObjects:@"Finder", nil];
[killFinderTask setLaunchPath:@"/usr/bin/killall"];
[killFinderTask setArguments:killFinderArray];
[killFinderTask launch];
[killFinderTask waitUntilExit];
}
在打开沙盒之前,它运行正常。当我打开沙盒时,控制台中的消息说:
killall: warning: kill -TERM 46676: Operation not permitted
我的应用仍在运行,但结果不正确。重置Finder
的部分未运行。我如何规避这个问题,以便我仍然可以使用沙盒,但任务仍在运行?
答案 0 :(得分:1)
使用NSUserScriptTask
运行脚本。
脚本文件必须(由用户)放置在NSApplicationScriptsDirectory
中才能在沙箱外部运行。