内存泄漏? com.apple.appkit.xpc.openAndSavePanelService 永远不会终止或释放

问题描述 投票:0回答:1

我有一个 SwiftUI/AppKit 应用程序(为了与 macos 10.15 兼容)。 我已经使用

NSOpenPanel
NSSavePanel
成功实现了打开和保存文件方法。

我在 macOS 的活动监视器中注意到,一旦调用我的方法,这两个进程就会打开,但它们永远不会终止:

com.apple.appkit.xpc.openAndSavePanelService ...


QuickLookUIService (com.apple.appkit.xpc.openAndSavePanelService ...

打开/保存完成后,它们仅使用最少的 CPU 和很少的内存(19 和 3 MB)。
到目前为止我还没有看到问题,但我想知道为什么这些辅助进程不会终止或取消分配。

这是

AppDelegate
中的代码:

@IBAction func openDocument(_ sender: Any?) {
    let openPanel = NSOpenPanel()
    openPanel.prompt = "Import"
    openPanel.title = "Choose a .plist file"
    openPanel.titleVisibility = .visible
    openPanel.canCreateDirectories = false
    openPanel.allowedFileTypes = ["plist"] // TODO: deprecated in macOS 12
    openPanel.setFrameAutosaveName("Open Panel")
    let result = openPanel.runModal()
    if result == .OK {
        if let fileUrl = openPanel.url {
            let path = fileUrl.path
            print("selected file to open: '\(path)'")
            loadArray(from: fileUrl)
        }
    } else if result == .cancel {
        print("Open document (Import Actions) was cancelled")
    }
}

此行为是否正常,还是错误或泄漏?

macos cocoa memory-leaks singleton nsopenpanel
1个回答
0
投票

好的,我找到了这个答案: 为什么 NSOpenPanel/NSSavePanel 显示内存泄漏?

它说

NSOpenPanel
/
NSSavePanel
单例,其中“第一次调用[它们]时,会创建
NSOpenPanel
的实例但不会释放。这不是泄漏,而是优化。 ”

© www.soinside.com 2019 - 2024. All rights reserved.