una son saber que para historial gratis eliminar dentro compras compra como cancelar apple app aplicaciones iphone objective-c

son - historial de compras app store iphone



Obteniendo el tiempo transcurrido(Objetivo-c) (7)

No debe confiar en [NSDate date] para los plazos, ya que puede informar en exceso o por debajo del tiempo transcurrido. ¡Incluso hay casos en los que aparentemente su computadora viajará en el tiempo ya que el tiempo transcurrido será negativo! (Por ejemplo, si el reloj se movió hacia atrás durante el tiempo).

Según Aria Haghighi en la conferencia "Reconocimiento avanzado de gestos de iOS" del curso Stanford iOS de invierno 2013 (34:00), debe usar CACurrentMediaTime() si necesita un intervalo de tiempo preciso.

C objetivo:

#import <QuartzCore/QuartzCore.h>

CFTimeInterval startTime = CACurrentMediaTime(); // perform some action CFTimeInterval elapsedTime = CACurrentMediaTime() - startTime;

Rápido:

let startTime = CACurrentMediaTime() // perform some action let elapsedTime = CACurrentMediaTime() - startTime

El motivo es que [NSDate date] sincroniza en el servidor, por lo que podría ocasionar " [NSDate date] sincronización de tiempo" que pueden llevar a errores muy difíciles de rastrear. CACurrentMediaTime() , por otro lado, es una hora del dispositivo que no cambia con estas sincronizaciones de red.

Deberá add el marco QuartzCore a la configuración de su destino.

Necesito obtener el tiempo transcurrido entre dos eventos: por ejemplo, entre la aparición de UIView y la primera reacción del usuario.


Otras respuestas son correctas (con una advertencia *). Agregué esta respuesta simplemente para mostrar un uso de ejemplo:

- (void)getYourAffairsInOrder { NSDate* methodStart = [NSDate date]; // Capture start time. // … Do some work … NSLog(@"DEBUG Method %s ran. Elapsed: %f seconds.", __func__, -([methodStart timeIntervalSinceNow])); // Calculate and report elapsed time.

}

En la consola del depurador, ves algo como esto:

DEBUG Method ''-[XMAppDelegate getYourAffairsInOrder]'' ran. Elapsed: 0.033827 seconds.

* Advertencia: como otros mencionaron, use NSDate para calcular el tiempo transcurrido solo para fines ocasionales. Uno de estos propósitos podría ser la evaluación común, el perfil bruto, en el que solo se desea una idea aproximada de cuánto tiempo está tomando un método.

El riesgo es que la configuración de la hora actual del reloj del dispositivo podría cambiar en cualquier momento debido a la sincronización del reloj de la red. Por lo NSDate tiempo NSDate podría avanzar o retroceder NSDate en cualquier momento.


Para cualquiera que venga aquí buscando una implementación getTickCount () para iOS, esta es la mía después de juntar varias fuentes:

#include <mach/mach.h> #include <mach/mach_time.h> uint64_t getTickCount(void) { static mach_timebase_info_data_t sTimebaseInfo; uint64_t machTime = mach_absolute_time(); // Convert to nanoseconds - if this is the first time we''ve run, get the timebase. if (sTimebaseInfo.denom == 0 ) { (void) mach_timebase_info(&sTimebaseInfo); } // Convert the mach time to milliseconds uint64_t millis = ((machTime / 1000000) * sTimebaseInfo.numer) / sTimebaseInfo.denom; return millis; }



Use el método timeIntervalSinceDate

NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];

NSTimeInterval es solo un double , defina en NSDate esta manera:

typedef double NSTimeInterval;


utilice la función timeIntervalSince1970 de la clase NSDate como a continuación:

double start = [startDate timeIntervalSince1970]; double end = [endDate timeIntervalSince1970]; double difference = end - start;

básicamente, esto es lo que uso para comparar la diferencia en segundos entre 2 fechas diferentes. también verifique este enlace here


NSDate *start = [NSDate date]; // do stuff... NSTimeInterval timeInterval = [start timeIntervalSinceNow];

timeInterval es la diferencia entre inicio y ahora, en segundos, con una precisión de menos de milisegundos.