2012-03-17 164 views
0

我想获得两次之间的差异。要找到两次之间的差异

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self setCurrentQuestion]; 
} 


-(void)setCurrentQuestion{ 

    dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 
    startTime = [dateFormatter stringFromDate:[NSDate date]]; 
    date1 = [dateFormatter dateFromString:startTime]; 

    [self answerTapped]; 
} 

-(void)answerTapped{ 
      endtime = [dateFormatter stringFromDate:[NSDate date]]; 
      date2 = [dateFormatter dateFromString:endtime]; 
      [dateFormatter release]; 
      dateFormatter = nil; 

      NSTimeInterval * timeDifference =[date2 timeIntervalSinceDate:date1]; 


} 

我使用这个代码来获取开始时间和结束时间之间的差异,但我不兼容类型的表达式得到错误的“Inintializing‘NSTimeInterval *’(又名“双‘)’ NSTimeInterval'(又名'双')“在”NSTimeInterval * timeDifference = [date2 timeIntervalSinceDate:date1];“行。这个错误意味着什么?如何解决这个问题?或者请告诉我,我将如何获得时差?请帮忙。

回答

4

它的星号。您正在将timeDifference声明为指向NSTimeInterval的指针。这是你正确指出的双倍。只是改为:

NSTimeInterval timeDifference =[date2 timeIntervalSinceDate:date1]; 

此外,我认为你的日期和字符串发布得太早。最简单的做法是为日期声明属性。对于预ARC:

@property (retain, nonatomic) NSDate * date1; 
@property (retain, nonatomic) NSDate * date2; 

或ARC:

@property (strong, nonatomic) NSDate * date1; 
@property (strong, nonatomic) NSDate * date2; 

然后用点操作符像这样分配:

self.date1 = [NSDate date]; 

你不需要这些字符串的。

+0

谢谢Danh。我明白了你的观点,但是我的程序没有收到'EXC_BAD_ACCESS'的时差。你能告诉我为什么会发生这种情况吗? – hgpl 2012-03-17 05:19:49

+0

我不认为你需要这些字符串。当你想记录开始时间时,设置date1 = [NSDate date],当你想标记结束时,对date2做同样的处理。你的timeDifference行看起来很好。我对你的崩溃的猜测是date1的过早发布。我可以看到日期和字符串的声明吗? – danh 2012-03-17 05:28:22

+0

是的确实如此。NSString * currenttime; NSString * endtime; NSDate * date1; NSDate * date2; NSDateFormatter * dateFormatter; – hgpl 2012-03-17 05:37:29