iphone - 比较 UIImage 的两种方法显示不同的结果。该相信哪一个呢?

标签 iphone uiimage

我正在尝试比较两个 UIImage。如果我这样比较:

if ([UIImagePNGRepresentation ( holderImage) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"empty_image.png"])])
            NSLog(@"empty image");
        else
            NSLog(@"not empty image");

结果是肯定的,它们是平等的

如果我执行以下操作

` if ([holderImage isEqual:[UIImage imageNamed:@"empty_image.png"]])
            NSLog(@"empty image");
        else
            NSLog(@"not empty image"); `

结果是否定的,他们不是

情况相当复杂,因为:

1)图像必须(这意味着我非常确定)相等,所以我会相信第一个,除非

2) isEqual 比较在其他图像上始终给出真实结果。

所以我完全困惑了。你对此有何看法?顺便说一句,holderImage 刚刚从 NSUserDefaults 中获取。您认为它在存储在 NSUserDefaults 中时是否可能会发生某种变化,以便 isEqual 比较现在处于谎言状态?

最佳答案

UIImage 上的 isEqual 方法看起来是对象的指针/哈希,与 NSData 上的 isEqual 方法类似code> 会看到字节是相同的。

大多数对象使用的isEqual都是基于hash 。在 Apple 文档中,指定 NSData 实现 isEqual方法不同。

Two data objects are equal if they hold the same number of bytes, and if the bytes at the same position in the objects are the same.

关于iphone - 比较 UIImage 的两种方法显示不同的结果。该相信哪一个呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725204/

相关文章:

iphone - 另一个 NSInternalInconsistencyException,但使用 NSFetchedResultsController

iphone - 如何在 iOS 中从 Web 中获取数据?

iphone - 有效使用 iPhone OpenGl ES 进行 2d(和碰撞检测)

ios - 为什么屏幕截图图像会拉伸(stretch)?

ios - UISwitch 关闭/打开 - 图像不会出现

ios - Today Extension 小部件未在 iphone 6 plus 上加载

iphone - 如何让 UITextView 仅在充满文本时滚动

swift - 是否可以在不更改文本不透明度的情况下以编程方式更改标签背景图像的不透明度? ( swift )

ios - 如何使用 AFNetworking 从一组 URL 下载和存储图像?

android - 需要帮助将进程从 Java(android) 转换为 IOS Swift