Swift 过程是';t终止macOS应用程序/终止正在运行的进程

Swift 过程是';t终止macOS应用程序/终止正在运行的进程,swift,macos,process,kill,terminate,Swift,Macos,Process,Kill,Terminate,我使用getRunningPrcoess()函数获取所有正在运行的进程。但是当我试图终止某个特定进程时,终止函数不起作用,它不会终止进程。请告诉我我的代码有什么问题。我正在使用killProcess(processId:Int)函数,并在参数中传递进程ID以终止进程。是否有其他方法可以终止应用程序中正在运行的进程 //MARK:- Variables var arrApplication: [NSRunningApplication]! //MARK:- Load override func

我使用getRunningPrcoess()函数获取所有正在运行的进程。但是当我试图终止某个特定进程时,终止函数不起作用,它不会终止进程。请告诉我我的代码有什么问题。我正在使用killProcess(processId:Int)函数,并在参数中传递进程ID以终止进程。是否有其他方法可以终止应用程序中正在运行的进程

//MARK:- Variables
var arrApplication: [NSRunningApplication]!

//MARK:- Load
override func viewDidLoad() {
    super.viewDidLoad()
    // Do view setup here.
    tblRunningProcess.delegate = self
    tblRunningProcess.dataSource = self
    getRunningPrcoess()
}

//MARK:- Actions
@IBAction func btnEndTaskAction(_ sender: NSButton) {
    arrApplication[sender.tag].forceTerminate()
    getRunningPrcoess()
}

//MARK:- Functions
func getRunningPrcoess() {
    // Get all running applications
    let workspace = NSWorkspace.shared
    arrApplication = workspace.runningApplications
    tblRunningProcess.reloadData()
}

func numberOfRows(in tableView: NSTableView) -> Int {
    return arrApplication == nil ? 0 : arrApplication.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
    guard let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "RunningProcessTCell"), owner: self) as? RunningProcessTCell else { return nil }
    cell.lblProcessName.stringValue = "Name: \(arrApplication[row].localizedName ?? "N/A")"
    cell.lblProcessId.stringValue = "ID: \(arrApplication[row].bundleIdentifier ?? "N/A")"
    cell.imgIcon.image = arrApplication[row].icon
    cell.btnEndTask.tag = row
    return cell
}

我认为您正在初始化一个新进程,而不是终止现有进程
.init()
创建具有相同标识符的新进程,然后将其终止。所以你需要改变你的方法

更新:
正确的解决方案是在项目设置的“功能”部分关闭沙盒模式。

我也直接终止了该过程,但它不起作用:(.像这样ArraApplication[sender.tag].forceTerminate()是的,不知何故引用是错误的。看看这个,我检查了引用,标识符是正确的。每当我杀死我自己的应用程序时,它可以工作,但对其他正在运行的进程不起作用。我也更新了我的问题。你可以再看一遍。是的,只是一个猜测,那么可能操作系统不允许你,因为你处于沙盒模式。尝试打开f项目设置的“功能”部分中的沙箱模式。