3

当我使用处理程序打开一个NSSavePanelNSOpenPanel实例时,beginWithCompletionHandler:永远不会调用它。相反,我看到面板出现了几分之一秒,然后它又消失了,没有让用户选择文件。当我用它打开面板时,runModal它工作得很好。这里的代码:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

    NSLog(@"DONE"); // Never called, dialog disappears right away
}];

我在这里有什么遗漏吗?

谢谢,马克

4

1 回答 1

3

发现问题:在上面的代码中,savePanel 实例是在周围的方法结束后立即自动释放的。这会导致面板消失。解决方案是保持面板引用,直到调用完成块。

于 2011-03-28T09:12:12.267 回答