两个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]; }