当我使用NSSavePanel
打开NSOpenPanel
或beginWithCompletionHandler:
实例时,永远不会调用处理程序。取而代之的是,我看到面板出现了不到一秒钟的时间,然后又消失了而又没有让用户选择文件。当我用runModal
打开面板时,效果很好。这里的代码:
NSSavePanel *savePanel = [NSSavePanel savePanel];
//[savePanel runModal]; // Works
[savePanel beginWithCompletionHandler:^(NSInteger result){
NSLog(@"DONE"); // Never called, dialog disappears right away
}];
我在这里想念什么吗?
谢谢马克
最佳答案
找到了问题:在上面的代码中,只要周围的方法结束,就会自动释放savePanel实例。这将导致面板消失。解决方案是保留面板参考,直到调用完成块。
关于cocoa - 完成处理程序从未要求过NSSavePanel beginWithCompletionHandler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5456085/