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 回答