NSOpenPanelを使用して、ユーザーがMACからファイルを選択できるようにしています。パネルが正常に開き、正しいファイルが除外されますが、ファイルをクリックするとすぐにアプリケーションがクラッシュします。
パネルを開くための私のコードは次のとおりです。
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を呼び出すのは安全ではないと思います。
そして、私はこれを取得します:
コールスタックは次のようになります。
再帰呼び出しが発生する前にスタックを呼び出します。
呼び出しスタックは、WebFullScreenController.mmというWebKitフレームワークファイルにあり、このメソッドsetDisableActionsを再帰的に呼び出します。
@implementation CATransaction(SnowLeopardConvenienceFunctions)
+ (void)setDisableActions:(BOOL)flag
{
[self setValue:[NSNumber numberWithBool:flag] forKey:kCATransactionDisableActions];
}
なぜこれが起こっているのか誰かが何か考えを持っていますか?前もって感謝します。