Возможно, вам лучше использовать timeIntervalSince1970
, поскольку это широко используемый метод на многих языках. Он вернет количество секунд, прошедших с 1 января 1970 года.
Настройте переменную экземпляра для хранения первого timeInterval и инициализируйте ее значением, возвращаемым [[NSDate date] timeIntervalSince1970]
, затем вы можете использовать ее в своем методе следующим образом:
-(void) myMethod
{
NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970] - _initialTimeInterval;
NSLog(@"Seconds = %.2f", seconds);
}
Возможная причина, по которой ваш текущий код может дать сбой, заключается в том, что [NSDate date]
возвращает автоматически выпущенный объект. Несмотря на то, что переменная статическая, пул автозапуска, вероятно, освобождает объект даты, а затем вызывает сбой при попытке доступа к нему при следующем запуске метода.
Вы можете обойти этот сбой, если создадите новую дату или сохраните дату, возвращенную из date
. Однако присвоение сохраненного / принадлежащего объекта статической переменной приведет к утечке памяти, и я предлагаю вам попробовать вместо этого мое решение.
person
Jasarien
schedule
31.01.2011