获取EXC_BAD_ACCESS KERN_PROTECTION_FAILURE

时间:2016-01-18 14:44:20

标签: ios objective-c datetime exc-bad-access

我有时会在以下方法中获得EXC_BAD_ACCESS KERN_PROTECTION_FAILURE:

+ (NSString *) UTCStringWithDate:(NSDate *)date {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    NSLocale *enLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

    [dateFormatter setLocale:enLocale];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
    NSString *dateString = [dateFormatter stringFromDate:date];
    return dateString;
}

可能出现什么问题?请帮忙!

1 个答案:

答案 0 :(得分:0)

从说明中找不到哪条线路崩溃,所以这是我最好的猜测:

传入的NSDate参数可能有时会出现问题。

如果日期存在竞争条件,则可能会在此方法开始之前或刚刚开始之后释放其RAM位置并填充新对象。

尝试在激活NSZombies的情况下运行代码,或者在使用它之前尝试检查它是否仍然是NSDate对象。

NSAssert( [date isKindOfClass:[NSDate class]], @"Error, expected 'NSDate', but argument class was '%@'", NSStringFromClass([date class]) ); 
NSString *dateString = [dateFormatter stringFromDate:date];