我正在尝试比较两个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/

10-12 16:08