两个date之间的差异,以秒为单位

我有一个应用程序的内容显示给用户。 我现在想知道用户实际查看内容的时间。 所以在我的头文件中,我已经声明了一个

NSDate *startTime; NSDate *endTime; 

然后在我看来会出现

  startTime = [NSDate date]; 

然后在我看来将会消失

 endTime = [NSDate date]; NSTimeInterval secs = [endTime timeIntervalSinceDate:startTime]; NSLog(@"Seconds --------> %f", secs); 

但是,应用程序崩溃,有时会出现不同的错误。 有时候是内存泄漏,有时候是NSTimeInterval的问题,有时会在第二次返回内容之后崩溃。

任何想法来解决这个问题?

因为你写的时候不用ARC

startTime = [NSDate date];

您不保留startTime ,因此在-viewWillDisappear之前-viewWillDisappear其解除分配。 尝试

startTime = [[NSDate date] retain];

另外,我build议使用ARC。 内存pipe理的错误应该less于没有内存pipe理的错误

您应该为开始date声明一个保留的属性。 在计算时差之前,您的date已经发布。

所以申报

 @property (nonatomic, retain) NSDate *startDate - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self setStartDate: [NSDate date]]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; NSLog(@"Seconds --------> %f",[[NSDate date] timeIntervalSinceDate: self.startDate]); } 

不要忘记清理。

 - (void)dealloc { [self.startDate release]; [super dealloc]; }