0

アプリをバージョン 10.6 で実行しようとしていますが、実行すると EXC_BAD_ACCESS 例外が発生します。最新バージョンのコンピューターで実行すると問題なく動作しますが、何らかの理由で 7 より前のバージョンでは動作しません。10.6 コンピューターで開発していないので、クラッシュ ログを確認するだけです:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.CoreFoundation        0x00007fff87604930 CFDictionaryGetValue + 96
1   com.apple.CFNetwork             0x00007fff810814d9 CFHTTPCookieCreateWithProperties +         111
2   com.apple.Foundation            0x00007fff88812f4c -[NSHTTPCookie initWithProperties:]     + 29
3   com.apple.Foundation            0x00007fff88813243 +[NSHTTPCookie     cookieWithProperties:] + 50

これは、クラッシュ ログの主要部分です。辞書の値を取得しようとするとクラッシュするようですが、これらの読み取り方法が正確にはわかりません。

4

1 に答える 1

2

わかりました私はそれを解決することができました。次のようなメソッドを使用して、開始時に Cookie をロードしました。

- (NSHTTPCookie *)loadCookie {
    NSDictionary *properties = [[NSUserDefaults standardUserDefaults] dictionaryForKey:kDefCookie];
    return [NSHTTPCookie cookieWithProperties:properties[COOKIE_KEY]];
}

セッション間でユーザーの Cookie を保存できるように、Cookie のプロパティをデフォルトで保存しました。最新バージョンで実行すると、デフォルトに Cookie が保存されていない場合、このメソッドは nil を返しました。何らかの理由で、これは 10.6 では機能しないようです。このように方法を変更したところ、完全に機能するようになりました。

- (NSHTTPCookie *)loadCookie {
    NSDictionary *properties = [[NSUserDefaults standardUserDefaults] dictionaryForKey:kDefCookie];
    if (properties)
        return [NSHTTPCookie cookieWithProperties:properties[COOKIE_KEY]];
    else return nil;
}

クラッシュ ログを読むのを手伝ってくれた Carter Pape に感謝します。私は cfDictionary の部分に集中し、それ以前のものを読んでいませんでした。

于 2013-01-03T18:06:44.967 に答える