确定是否可以安全地杀死Finder

时间:2016-11-18 13:53:03

标签: swift macos swift2 finder

我目前正在开发一个实用程序,要求在对用户的默认值进行一些更改后重新启动Finder。

为了安全起见,我想在调用ondblClickRow: function (rowid, iRow, iCol, e) { $(this).jqGrid("editRow", rowid, { focusField: e.target }); }, beforeSelectRow: function (rowid) { var $self = $(this), i, // savedRows array is not empty if some row is in inline editing mode savedRows = $self.jqGrid("getGridParam", "savedRow"); for (i = 0; i < savedRows.length; i++) { if (savedRows[0].id !== rowid) { // save currently editing row // one can replace saveRow to restoreRow in the next line $self.jqGrid("saveRow", savedRows[i].id); } } return savedRows.length === 0; // allow selection if saving successful }, 之前检查Finder是否忙碌(通过killall Finder)。如果Finder正在复制文件或以其他方式忙,我想阻止该操作并稍等一下。

在macOS 10.10+上的Swift 2.3中,有没有办法确定Finder是否繁忙或是否可以安全地被杀死?

如果无法做到这一点,是否有更安全的方式让我刷新(重启)Finder?

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢@dfri的评论,我能够找到一种方法(虽然不是链接答案中提供的方式)。

由于无法观察Finder的NSRunningApplication对象(在我移除观察者之前,对象由于终止而deinit ialized),我最终从NSWorkspaceDidTerminateApplicationNotification观察{ {1}}

NSWorkspace.sharedWorkspace().notificationCenter

当我的控制器NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self, selector: #selector(MyController.applicationWasTerminated(_:)), name: NSWorkspaceDidTerminateApplicationNotification, object: nil) ialized时,我可以移除此观察者,并且选择器如下所示:

deinit