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