Estoy tratando de comparar dos UIImages. Si se compara esta manera:Dos formas de comparar UIImages muestran resultados diferentes. ¿A cuál creer?
if ([UIImagePNGRepresentation (holderImage) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"empty_image.png"])])
NSLog(@"empty image");
else
NSLog(@"not empty image");
el resultado es Sí, son EQUAL
si estoy haciendo lo siguiente
` if ([holderImage isEqual:[UIImage imageNamed:@"empty_image.png"]])
NSLog(@"empty image");
else
NSLog(@"not empty image"); `
el resultado es No, no lo son
La situación es bastante complicada porque:
1) Las imágenes deben ser (eso significa que soy más o menos seguro) igual así que creería el primero a menos que
2) isEqual comparación siempre da resultado verdadero en otras imágenes.
Así que estoy completamente confundido. ¿Qué piensas sobre eso? Por cierto, el holderImage acaba de tomarse de NSUserDefaults. ¿Crees que podría ser cambiado de alguna manera mientras está almacenado en NSUserDefaults, por lo que la comparación de Equal está mintiendo ahora?
¿Seguro Por lo general, si lo comparo [myImage IsEqual:..? [UIImage imageNamed: @ "myImage.png"] ] (y SÉ que son iguales) la comparación dice que son iguales. ¿[UIImage imageNamed: @ "myImage.png"] tiene un puntero para ser comparado? –
No, no estoy muy seguro, sino porque cuando ambas imágenes están cargadas a través del método 'imageNamed' se devuelve el mismo objeto porque' imageNamed' usa el almacenamiento en caché. – rckoenes
@rckoenes Creo que la caché puede ser optimizada. Estábamos usando 'isEqual' y' imageNamed' en pruebas unitarias, y funciona muy bien en algunas situaciones, pero en otras devuelve NO cuando la comparación NSData pasa. –