2015-06-10 3 views
1

Я использую dataWithContentsOfFile на изображении PNG, и iOS Simulator возвращает значение, отличное от iOS-устройства. Мое устройство - это 64-битный iPad Air (iOS 8.3), и мой симулятор настроен на iPad Retina iOS 8.3. Вот код, который я использую:NSData dataWithContentsOfFile возвращает разные результаты на устройстве

NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]; 
    NSData *data = [NSData dataWithContentsOfFile:sourcePath]; 
    NSString *hash = [self md5Hash:data] 

    // Results on device: 2D25F346396FB00BEB27754ED1B56310 
    // Results on simulator: 55016FD1AB3DA0F882FEA85D5ABCA2ED 

Я проверил мой хэш-функции со строкой, и она отлично работает независимо от устройства. Я не буду показывать результаты метода dataWithContentsOfFile, но могу заверить вас, что они разные.

Update: Тестирование dataWithContentsOfURL отлично работает, например:

NSURL *fileURL = [NSURL URLWithString:@"https://www.google.com/images/srpr/logo11w.png"]; 
    NSData *data = [NSData dataWithContentsOfURL:fileURL]; 
    NSString *hash = [self md5Hash:data] 

    // Results on device: 57E396BAEDFE1A034590339082B9ABCE 
    // Results on simulator: 57E396BAEDFE1A034590339082B9ABCE 
+1

Я бы сказал, что разница в MD5 заключается в том, что разные архитектуры используют разные форматы чисел. Может ли быть, что изменчивый iPad работает в 32-битном режиме? Возможно, связано: http://stackoverflow.com/questions/697361/md5-hash-calculates-differently-on-server – Gyfis

+0

Извините, я допустил ошибку. Я использую iPad Retina, который является 64-битным. Я проверил хэш-код против текстовых строк, и они дают те же результаты на симуляторе и устройстве в моем случае. –

+0

Я бы предположил, что файл отличается. –

ответ

1

я собираюсь предположить, что это Xcode применение Pngcrush к изображению ... так что это на самом деле не тот же файл.

+0

Вот оно, на устройстве строит pngcrush манипулирует изображением. Я должен был установить директиву pngcrush для NO, чтобы она работала правильно. Интересно, что для создания симулятора pngcrush не применяется к изображениям. –

Смежные вопросы