@dfriのコメントのおかげで、私は(これはリンクされた答えに示されたものではありませんが)これを行う方法を見つけ出すことができました。ファインダー用NSRunningApplication
オブジェクトを観察すると、(オブジェクトが原因私はオブザーバーを削除することができる前に終了にialized deinit
た)ことはできませんでしたので
は、私がNSWorkspace.sharedWorkspace().notificationCenter
NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self, selector: #selector(MyController.applicationWasTerminated(_:)), name: NSWorkspaceDidTerminateApplicationNotification, object: nil)
からNSWorkspaceDidTerminateApplicationNotification
を観察することになった私はその後削除することができます
func applicationWasTerminated(notification: NSNotification?) {
guard let notif = notification else { return }
guard let userInfo = notif.userInfo as? [String : AnyObject] else { return }
guard let identifier = userInfo["NSApplicationBundleIdentifier"] as? String else { return }
if identifier == "com.apple.finder" {
NSWorkspace.sharedWorkspace().launchAppWithBundleIdentifier("com.apple.finder", options: NSWorkspaceLaunchOptions.Default, additionalEventParamDescriptor: nil, launchIdentifier: nil)
}
}
はあなたが強制的にそれを殺すのではなく、でもやめ送信してよろしいです:私のコントローラは
deinit
はialized、セレクタれ、この観察者は、このようになります。アクティブなものが続いていますか? – dfri私はそれが実際に可能であるかどうかはわかりませんでした。これにAppleScriptを使うべきですか?答えとして例を掲示できますか?それは私を助けるだろう – beeb
あなたが(obj-C、ココア)を助けることができる場合[この回答](http://stackoverflow.com/a/10226948/4573247)参照してください。代わりに、AppleScriptを使用して、[この回答](http://stackoverflow.com/a/1462686/4573247)があなたを助けることができるかどうかを確認してください(obj-C、AppleScript)。 – dfri