Inny wynik dla [daty NSDate] w kilku urządzeniach

Na początek muszę powiedzieć, że ustawiłem autoset w ustawieniach daty i godziny, a strefa czasowa jest taka sama dla każdego urządzenia. Więc używam[NSDate date] uzyskać znacznik czasu w milisekundach, a następnie zakodować doNSData i wyślij do innego urządzenia. Dane odbiornika są dekodowane i odejmowane nowymi[NSDate date]. Aby uzyskać całkowity czas potrzebny na wysłanie i odebranie wiadomości. Pomyślałem, że ponieważ nadawca to iPhone 4 iOS6, a odbiornik to iPhone 5 iOS7, odbiornik ma wcześniejszy znacznik czasu niż nadawca. Nie wiem dlaczego? Może[NSData date] nie jest najbardziej niezawodną klasą dla tego rodzaju operacji? używamGCDAsyncUdpSocket do wysyłania / odbierania UDP.

Nadawca kodu

NSData *data2 = [self createRandomNSData:8192];
NSMutableData *dataToSend =[NSMutableData data];
[dataToSend appendBytes:&tag length:sizeof(int)];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
[dataToSend appendBytes:&currentTimeStamp length:sizeof(long long)];
[dataToSend appendData:data2];
NSLog(@"%i || %lld || %lu",tag, currentTimeStamp,(unsigned long)[dataToSend length]);
[_udpSocket sendData:dataToSend toHost:@"230.0.0.1" port:_port withTimeout:-1 tag:tag];
tag++;

Odbiornik kodu

char* dataBytes = [data bytes];
int inTag;
long long inCurrentTimeStamp;
[data getBytes:&inTag length:sizeof(int)];
[data getBytes:&inCurrentTimeStamp range:NSMakeRange(sizeof(int), sizeof(long long))];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
long long timeStampDiff = currentTimeStamp - inCurrentTimeStamp;
self.delay = timeStampDiff;
NSLog(@"%i || %lld || %lu",inTag, timeStampDiff,(unsigned long)[data length]);

questionAnswers(4)

yourAnswerToTheQuestion