Разный результат для [NSDate date] в нескольких устройствах

Для начала я должен сказать, что я установил автонастройку в настройках даты и времени, и часовой пояс одинаков для каждого устройства. Так что я использую[NSDate date] чтобы получить метку времени в миллисекундах, затем закодировать вNSData и отправить на другое устройство. На приемнике данные декодируются и вычитаются с новыми[NSDate date], Так что я получаю общее время, необходимое для отправки и получения сообщения. Я думал, потому что, если отправителем является iPhone 4 iOS6, а получателем - iPhone 5 iOS7, тогда получатель имеет более раннюю отметку времени, чем отправитель. Я не знаю почему? Может быть[NSData date] не самый надежный класс для такого рода операций? я используюGCDAsyncUdpSocket для отправки / получения UDP.

Код отправителя

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++;

Код получателя

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]);

Ответы на вопрос(4)

Ваш ответ на вопрос