比较NSDate值和EXC_BAD_ACCESS错误时出现奇怪的问题

时间:2011-02-28 15:38:49

标签: iphone objective-c nsdate exc-bad-access

我正在开发一个比较日期值的程序,如果新选择的日期小于dateStart,则设置开始日期,如果新选择的日期大于dateStart,则设置dateEnd。

当我选择更大的值(同时设置dateEnd)时,代码效果很好但是当我尝试设置dateStart时程序崩溃了。继承我的代码:

- (void)setDate:(NSDate *)dateVal
{
    NSComparisonResult result = [dateVal compare:dateStart];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd.MM.yyyy 00:00:00"];

    switch (result)
    {
        case NSOrderedAscending: 
        {
            dateStart = dateVal;
            [dateFormatter setDateFormat:@"dd.MM.yyyy 00:00:00"];
            [lblDateStart setText:[dateFormatter stringFromDate:dateStart]];
        } break;
        case NSOrderedDescending:{ 
            dateEnd = dateVal;
            [dateFormatter setDateFormat:@"dd.MM.yyyy 23:59:59"];
            [lblDateEnd setText:[dateFormatter stringFromDate:dateEnd]];
        } break;
        case NSOrderedSame: NSLog(@"%@ is the same as %@", dateStart, dateVal); break;
        default: NSLog(@"erorr dates %@, %@", dateStart, dateVal); break;
    }
}

代码在

处出现EXC_BAD_ACCESS错误
  

NSComparisonResult result = [dateVal   比较:dateStart];

当我从日历视图中选择较小的日期值时。

我在开始时都将dateStart和dateEnd设置为属性,并为它们设置[[NSDate alloc] init]。请帮忙。

1 个答案:

答案 0 :(得分:1)

好吧,伙计们,我终于意识到了这个问题。

问题在于这一行:

dateStart = dateVal;

但必须是这样的:

[self setdateStart:dateVal];

谢谢你,祝你有个愉快的一天。