Być może lepiej będzie użyć timeIntervalSince1970
, ponieważ jest to powszechnie stosowana metoda w wielu językach. Zwróci liczbę sekund, które upłynęły od 1 stycznia 1970.
Skonfiguruj zmienną instancji do przechowywania po raz pierwszyInterval i zainicjuj ją do wartości zwróconej przez [[NSDate date] timeIntervalSince1970]
, możesz użyć jej w swojej metodzie jak ta :
-(void) myMethod
{
NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970] - _initialTimeInterval;
NSLog(@"Seconds = %.2f", seconds);
}
posible powód aktualna kod może upaść dlatego [NSDate date]
zwraca autoreleased obiekt. Mimo że zmienna jest statyczna, pula autorelease prawdopodobnie zwalnia obiekt daty, a następnie powoduje awarię podczas próby uzyskania do niej dostępu przy następnym uruchomieniu metody.
Być może uda ci się ominąć tę awarię, jeśli utworzysz nową datę lub zatrzymasz tę zwróconą z date
. Jednak przypisanie zatrzymanego/posiadanego obiektu do zmiennej statycznej spowoduje wyciek pamięci i sugeruję, abyś zamiast tego wypróbował moje rozwiązanie.
Zgodnie z dokumentacją Specyfikacje formatu String% f określa podwójne. "% f - liczba zmiennoprzecinkowa 64-bitowa (podwójna)" – Jasarien
Wystarczająco fair. Twoja odpowiedź powyżej wygląda dobrze. :) –
To zawiesza się bez żadnego komunikatu o błędzie. Czym powinienem być mój symbol zastępczy? – Patricia