gpt4 book ai didi

swift - NSOpenPanel 的问题和大量内存泄漏

转载 作者:行者123 更新时间:2023-11-28 07:33:10 27 4
gpt4 key购买 nike

我正在为 rsync (RsyncOSX) 开发一个 GUI,在下一个版本中计划添加一个用于选择目录的 GUI。前段时间我在使用 NSOpenPanel 时遇到了一些稳定性问题,但现在我想再试一次。但似乎仍然存在使用 NSOpenPanel 的问题,控制台产生以下错误:

FIFinderSyncExtensionHost 类在/System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8c017210) 和/System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/中实现FinderSyncCollaborationFileProviderOverride (0x10f1d5dc8)。将使用两者之一。哪一个是未定义的。

我还通过 Xcode 工具运行该应用程序并检查内存泄漏,每次打开 NSOpenPanel 时都会出现巨大的内存泄漏..

enter image description here

有没有人找到解决方法?打开 GUI 的代码非常简单:

private func openfiledlg (title: String, message: String) {
let openPanel = NSOpenPanel()
openPanel.prompt = "Select"
openPanel.allowsMultipleSelection = false
openPanel.canChooseDirectories = true
openPanel.canCreateDirectories = true
openPanel.canChooseFiles = false
openPanel.resolvesAliases = true
openPanel.title = title
openPanel.message = message
if self.modal {
let OK = openPanel.runModal()
if OK.rawValue == NSApplication.ModalResponse.OK.rawValue {
self.urlpath = openPanel.url
}
} else {
openPanel.begin(completionHandler: { response in
if response.rawValue == NSFileHandlingPanelOKButton {
self.urlpath = openPanel.url
}
openPanel.close()
})
}

}

设置 weak var openPanel = NSOpenPanel() 只会减少内存泄漏..

最佳答案

如果窗口设置为关闭时释放,则在当前事件完成后向对象发送释放消息。对于 NSWindow 对象,默认在关闭时释放,而对于 NSPanel 对象,默认不释放。您可以使用 isReleasedWhenClosed 属性更改默认行为。

关于swift - NSOpenPanel 的问题和大量内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com