Macos NSOpenPanel仅显示一次图纸

Macos NSOpenPanel仅显示一次图纸,macos,cocoa,automatic-ref-counting,nsopenpanel,Macos,Cocoa,Automatic Ref Counting,Nsopenpanel,我有一个使用NSOpenPanel的应用程序: openDlg = [NSOpenPanel openPanel]; [openDlg setCanChooseDirectories:YES]; [openDlg beginSheetModalForWindow:MainWindow completionHandler:nil]; if ([openDlg runModal] == NSOKButton){ NSLog(@"accept"); } else { NSLog(

我有一个使用NSOpenPanel的应用程序:

openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseDirectories:YES];
[openDlg beginSheetModalForWindow:MainWindow completionHandler:nil];

if ([openDlg runModal] == NSOKButton){
     NSLog(@"accept");
} else {
     NSLog(@"cancel");
}

问题是,取消后,如果我再次显示弹出窗口,它将显示为一个窗口,而不是一张纸(第一次调用时会显示)。我想这是因为发布了一些东西,但是我的项目使用了ARC,所以我不知道。我做错了什么?谢谢

看起来您接受了NSOpenPanel提供的值,但没有删除面板本身,这可以通过在代码末尾添加以下内容来完成

[openDlg close];
[NSApp endSheet:openDlg];

你能把代码贴在你再次显示面板的地方,但它不起作用吗?问题是否与ARC或内存管理有关值得怀疑。