0

我在使用 NSUserDefaults 时发生了奇怪的崩溃,我自己无法重现此问题,但我从用户设备之一的 Crashlytics 收到此报告。

Exception: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000

Crashed: com.apple.NSURLConnectionLoader
0  libobjc.A.dylib                0x22613a76 objc_msgSend + 21
1  CoreFoundation                 0x22e97a58 __CFBasicHashDrain + 448
2  CoreFoundation                 0x22d77795 CFRelease + 424
3  CoreFoundation                 0x22e979e8 __CFBasicHashDrain + 336
4  CoreFoundation                 0x22d77795 CFRelease + 424
5  CoreFoundation                 0x22e26b8f -[CFPrefsSearchListSource alreadylocked_copyDictionary] + 906
6  CoreFoundation                 0x22e258ad -[CFPrefsSearchListSource alreadylocked_copyValueForKey:] + 52
7  CoreFoundation                 0x22e9f6bb -[CFPrefsSource copyValueForKey:] + 50
8  CoreFoundation                 0x22ea1e3d ___CFPreferencesCopyAppValueWithContainerAndConfiguration_block_invoke + 28
9  CoreFoundation                 0x22e23969 __95+[CFPrefsSearchListSource withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 400
10 CoreFoundation                 0x22e2377f normalizeQuintuplet + 354
11 CoreFoundation                 0x22e23617 +[CFPrefsSearchListSource withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 106
12 CoreFoundation                 0x22ea1dc9 _CFPreferencesCopyAppValueWithContainerAndConfiguration + 248
13 Foundation                     0x235c436f -[NSUserDefaults(NSUserDefaults) objectForKey:] + 46
14 MyApp                       0x12ddc49 -[MyStore getConfigValue:] (MyStore.m:43)

MyStore 中的代码如下:

- (id) getConfigValue:(NSString *)key {
    if (key) {
        return [[NSUserDefaults standardUserDefaults] valueForKey:key];
    }
    return nil;
}

我称这个方法如下

NSString *userId = [storeObj getConfigValue:@"UserID"];

现在,在某些情况下可能不会设置此值,但应该只返回 nil。我找不到任何导致崩溃的正当理由。

感谢帮助。

4

0 回答 0