Al establecer la hora en los iDevices de 64 bits al 1 de enero de 1970 (tiempo de Unix Epoch 0) y al reiniciarlo, el iDevice se bloquea debido a un subdesbordamiento de enteros. Mi pregunta es sobre qué operación realmente causa el bloqueo:
Método 1: Llamó a alguien en el tiempo de Época 1455403324, este número se guarda para los cálculos de la marca de tiempo para ver cuánto tiempo hace que realizó la llamada. Ahora cambia la hora a 1/1/1970. Han transcurrido 5 minutos y su tiempo de Época ahora es 300, pero se está ejecutando un cálculo de marca de tiempo para su última llamada y la ecuación es 300 (hora actual) - 1455403324 (hora de la última llamada), que es un valor negativo, lo que provoca el desbordamiento de enteros (suponiendo el entero de la marca de tiempo no está firmado, lo que no tendría sentido si no fuera así porque, al igual que la suposición con el valor del tiempo de época real, ¿cómo es posible que alguien haya llamado otra x minutos en el futuro?)?
Método 2: Como alguien dijo antes, "En algunas zonas horarias, establecer la fecha en 1 de enero de 1970 configurará el reloj interno en un número menor que cero, ya que la hora se almacena en GMT (como el número de segundos desde la medianoche en esa fecha) y luego el desplazamiento se aplica antes de la visualización ", escrito por enlace . "En otras zonas horarias, el ajuste del reloj dará como resultado un valor de tiempo positivo. La mejor suposición es que esto se activa al tener un valor de tiempo inferior a cero".
¿Son ambos válidos o uno u otro?