Difference between 2 dates in seconds ios

Adam Altinkaya picture Adam Altinkaya · Nov 1, 2013 · Viewed 34.4k times · Source

I have an app where content is displayed to the user. I now want to find out how many seconds a user actually views that content for. So in my header file, I've declared an

 NSDate *startTime;
 NSDate *endTime;

Then in my viewWillAppear

 startTime = [NSDate date];

Then in my viewWillDisappear

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

However, the app crashes, with different errors sometimes. Sometimes it's a memory leak, sometimes it's a problem with the NSTimeInterval, and sometimes it crashes after going back to the content for a second time.

Any ideas on to fix this?

Answer

medvedNick picture medvedNick · Nov 1, 2013

since you are not using ARC, when you write

startTime = [NSDate date];

you do not retain startTime, so it is deallocated before -viewWillDisappear is called. Try

startTime = [[NSDate date] retain];

Also, I recommend to use ARC. There should be much less errors with memory management with it, than without it