2011-11-02 46 views
0

我正在使用NSOpenPanel允許用戶從他們的MAC中選擇一個文件。該面板打開罰款和過濾正確的文件,但只要我點擊一個文件,我的應用程序崩潰。NSOpenPanel在選擇文件時崩潰

這裏是我的代碼,打開面板:

if ([openDlg runModalForDirectory:begin file:filename types:filetypes] == NSOKButton) 
{ 
    NSArray* selected = [openDlg filenames]; 
    for (int i = 0; i < (int)[selected count]; i++) 
    { 
     NSString* fileName = [selected objectAtIndex:i]; 
     string fn = [fileName UTF8String]; 
     results->Append(Value::NewString(fn)); 
    } 
} 

的代碼永遠不會從runmodalForDirectory方法調用返回。

所以一旦我選擇一個文件調試器控制檯這樣說:

Program received signal: 「EXC_BAD_ACCESS」. 
warning: Unable to restore previously selected frame. 
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not safe to call dlopen at this time.) 

簡單地說我看到的不是安全地調用dlopen的在這個時候。

,然後我得到這個:

Loading a lot of stack frames

和調用堆棧看起來是這樣的:

Call Stack

之前調用堆棧的遞歸調用發生:

enter image description here

調用堆棧是在叫WebFullScreenController.mm WebKit的框架文件遞歸調用此方法setDisableActions:

@implementation CATransaction(SnowLeopardConvenienceFunctions) 
+ (void)setDisableActions:(BOOL)flag 
{ 
    [self setValue:[NSNumber numberWithBool:flag] forKey:kCATransactionDisableActions]; 
} 

有誰知道爲什麼發生這種情況的任何想法?提前致謝。

回答

相關問題