Если вы не используете ARC, вам необходимо владеть NSDate
объектом, который вы храните в _startTime
. +[NSDate date]
возвращает объект, который вам не принадлежит, и он, вероятно, был освобожден и, следовательно, станет недействительным к тому времени, как вы его отправите timeIntervalSinceNow
.
Вы можете создать собственное NSDate
примерно так:
// By default, NSDates are initialized with the current date
_startTime = [[NSDate alloc] init];
или явно завладев возвращаемым значением +date
:
_startTime = [[NSDate date] retain];
Они эквивалентны в действии.
Еще лучше (при условии, что у вас есть свойство, определенное для _startTime
(что вам следует)), было бы использовать установщик:
[self setStartTime:[NSDate date]];
Со свойством, определенным как retain
ing, это будет правильно обрабатывать память.