Я разрабатываю графический интерфейс для rsync (RsyncOSX), и в следующей версии планируется добавить графический интерфейс для выбора каталогов. Некоторое время назад я испытывал некоторые проблемы со стабильностью при использовании NSOpenPanel, но теперь я хотел попробовать еще раз. Но, тем не менее, возникают проблемы с использованием NSOpenPanel, консоль выдает следующую ошибку:
Класс FIFinderSyncExtensionHost реализован как в /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8c017210), так и в /System/Library/PrivateFrameworks/FileProvide/FramendsConver.Fride.Obride.Ovride.Ovride.Ovride.OF FinderSyncCollaborationFileProviderOverride (0x10f1d5dc8). Один из двух будет использован. Какой из них не определен.
Я также запустил приложение с помощью инструментов Xcode и проверил наличие утечек памяти, и каждый раз, открывая NSOpenPanel, возникает огромная утечка памяти.
![enter image description here](https://i.stack.imgur.com/dLsgW.png)
Кто-нибудь нашел обходной путь? Код для открытия графического интерфейса очень прост:
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()
})
}
}
Установка слабого var openPanel = NSOpenPanel () только уменьшает утечку памяти.