我正在尝试比较两个UIImage。如果我这样比较:
if ([UIImagePNGRepresentation ( holderImage) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"empty_image.png"])])
NSLog(@"empty image");
else
NSLog(@"not empty image");
结果是YES,等于
如果我正在执行以下操作
` if ([holderImage isEqual:[UIImage imageNamed:@"empty_image.png"]])
NSLog(@"empty image");
else
NSLog(@"not empty image"); `
结果是否定的,不是
情况非常复杂,因为:
1)图片必须是(这意味着我非常确定)相等,所以我会相信第一个图片,除非
2)isEqual比较总是在其他图像上提供真实结果。
所以我很困惑。您如何看待?顺便说一句,holderImage刚从NSUserDefaults中获取。您是否认为在将其存储在NSUserDefaults中时可能会有所更改,以便现在进行isEqual比较?
最佳答案
isEqual
上的UIImage
方法看起来是对象的指针/哈希,而isEqual
上的NSData
方法将看起来它的字节是相同的。
大多数对象使用的isEqual
基于hash。在Apple文档中,指定NSData
以不同的方式实现 isEqual
方法。
关于iphone - 比较UIImage的两种方法显示不同的结果。相信哪一个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8725204/