【问题标题】:Strange problem when Comparing NSDate values and EXC_BAD_ACCESS error比较 NSDate 值和 EXC_BAD_ACCESS 错误时的奇怪问题
【发布时间】:2011-02-28 15:38:48
【问题描述】:

我正在开发一个程序,该程序比较日期值,如果新选择的日期小于 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 结果 = [dateVal 比较:日期开始];

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

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

【问题讨论】:

  • 两件事。您是否尝试过使用 Zombies 调试代码,dateVal 是否可能是指向您之前发布的内容的指针?
  • Nicholas,我通过将 dateStart = dateVal 更改为 [self setdateStart:dateVal] 解决了这个问题,我意识到这不是分配日期的正确方法。感谢您的帮助。

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


【解决方案1】:

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

问题出在这一行:

dateStart = dateVal;

但它必须是这样的:

[self setdateStart:dateVal];

谢谢,祝你有美好的一天。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 2019-10-10
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2011-06-03
    相关资源
    最近更新 更多