Разницу между 2 датами в секундах для iOS

У меня есть приложение, где контент отображается для пользователя. Теперь я хочу выяснить, сколько секунд пользователь фактически просматривает контент для. Так что в моем заголовочный файл, я'вэ объявлен

 NSDate *startTime;
 NSDate *endTime;

Потом в моей viewWillAppear

 startTime = [NSDate date];

Потом в моей viewWillDisappear

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

Однако, приложение падает с различными ошибками иногда. Иногда это'ы утечка памяти, иногда это'ов проблемы с NSTimeInterval, и иногда она падает после вернуться к содержанию во второй раз.

Любые идеи о том, чтобы это исправить?

Комментарии к вопросу (4)
Решение

поскольку вы не используете дуги, когда ты пишешь

свойство StartTime = [NSDate дата];

вы не сохраняете начала, поэтому он освобождается раньше-viewWillDisappear` называется. Попробовать

свойство StartTime = [[NSDate дата] сохранить];

Также, я рекомендую использовать дуги. Там должно быть гораздо меньше ошибок с управлением памятью с ним, чем без него

Комментарии (0)

Вы должны объявить свойство сохранять к дате начала. Ваша дата становится выпущен до вы можете рассчитать разницу во времени.

Так объявить

@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];
}
Комментарии (0)