Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 完成处理程序从未调用NSSavePanel beginWithCompletionHandler_Cocoa_Nsopenpanel_Nssavepanel - Fatal编程技术网

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实例就会自动删除。这会导致面板消失。解决方案是保持面板引用,直到调用完成块