iOS-EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

时间:2019-07-17 05:51:31

标签: ios objective-c crash nsmutablearray

我有一个NSMutable数组,我在其中添加目标并存储在用户默认值中,但添加时会崩溃。

 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        bssidObserverArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
    }

   if (bssidObserverArray.count > 0) {
        if (![bssidObserverArray containsObject:vendorID]) {
            NSLog(@"bssidObserverArray %@",bssidObserverArray);
            // In this line app is getting crashed
                [bssidObserverArray addObject:vendorID];
                [[NSUserDefaults standardUserDefaults] setObject:bssidObserverArray forKey:@"bssidObserverArray"];

        }
    }else{
        [bssidObserverArray addObject:vendorID];
        [[NSUserDefaults standardUserDefaults] setObject:bssidObserverArray forKey:@"bssidObserverArray"];
    }

任何建议都会更有帮助。

1 个答案:

答案 0 :(得分:0)

假设bssidObserverArray是NSMutable数组,然后在这里出现问题。

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        bssidObserverArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
    }

因为NSUserdefaults返回不可变。你可以这样做

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        NSArray *someArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
        bssidObserverArray = [someArray mutableCopy];

    }