0

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];
}

なぜこれが起こっているのか誰かが何か考えを持っていますか?前もって感謝します。

4

1 に答える 1

0

答えが見つかりました。おそらくこの質問を削除できます。使用していたWebkitのバージョンであることが判明し、webkit.orgに投稿されたこのバグ修正に従ってwebkitを変更する必要がありました。

https://bugs.webkit.org/show_bug.cgi?id=61224

于 2011-11-02T19:02:16.037 に答える