Cocoa 完成处理程序从未调用NSSavePanel beginWithCompletionHandler
当我使用Cocoa 完成处理程序从未调用NSSavePanel beginWithCompletionHandler,cocoa,nsopenpanel,nssavepanel,Cocoa,Nsopenpanel,Nssavepanel,当我使用beginWithCompletionHandler:打开NSSavePanel或NSOpenPanel实例时,将永远不会调用该处理程序。相反,我看到面板出现了几分之一秒,然后再次消失,而不让用户选择文件。当我用runModal打开面板时,它工作正常。代码如下: NSSavePanel *savePanel = [NSSavePanel savePanel]; //[savePanel runModal]; // Works [savePanel beginWithCompletio
beginWithCompletionHandler:
打开NSSavePanel
或NSOpenPanel
实例时,将永远不会调用该处理程序。相反,我看到面板出现了几分之一秒,然后再次消失,而不让用户选择文件。当我用runModal
打开面板时,它工作正常。代码如下:
NSSavePanel *savePanel = [NSSavePanel savePanel];
//[savePanel runModal]; // Works
[savePanel beginWithCompletionHandler:^(NSInteger result){
NSLog(@"DONE"); // Never called, dialog disappears right away
}];
这里有我遗漏的东西吗
谢谢,Mark发现了问题:在上面的代码中,只要周围的方法结束,savePanel实例就会自动删除。这会导致面板消失。解决方案是保持面板引用,直到调用完成块