2011-03-28 2 views
3

NSSavePanel 또는 NSOpenPanel 인스턴스를 beginWithCompletionHandler:으로 열면 처리기가 호출되지 않습니다. 대신에 나는 사용자가 파일을 선택하게하지 않고 다시 사라지기 전에 패널이 1 초의 짧은 시간 동안 나타나는 것을 보았습니다. runModal으로 패널을 열면 제대로 작동합니다. 여기에 코드 :완료 핸들러가 NSSavePanel에 대해 호출되지 않았습니다. beginWithCompletionHandler

NSSavePanel *savePanel = [NSSavePanel savePanel]; 

//[savePanel runModal]; // Works 

[savePanel beginWithCompletionHandler:^(NSInteger result){ 

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

내가 여기에없는 것이 있습니까?

감사합니다, 마크

답변

3

문제 발견 : 위의 코드에서 savePanel 인스턴스가 즉시 주변의 방법은 끝으로 오토 릴리즈된다. 이로 인해 패널이 사라집니다. 해결 방법은 완성 블록이 호출 될 때까지 패널 참조를 유지하는 것입니다.

관련 문제