我有时会在以下方法中获得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;
}
可能出现什么问题?请帮忙!
答案 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];