2011-11-02 45 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]; 
} 

有谁知道为什么发生这种情况的任何想法?提前致谢。

回答

相关问题