我使用UIColor映射到字典中的值,但我碰到了一件非常奇怪的事情。我的一半键返回正确的值,而另一半则没有。当我使用isEqual比较UIColors时,它们返回false,但是hash匹配得很好。
for key in colorToAllocationCurrent.keys {
print("\(key.hash) ---> \(currentColor!.hash)")
print(key.isEqual(currentColor))
}
返回以下内容:
144048128 ---> 151431738
false
155123712 ---> 151431738
false
147739933 ---> 151431738
false
151431738 ---> 151431738 <-------- EQUAL?
false
关于为什么会出错的任何想法?我已经检查了UIColor的内容,他们也是一样。
当我打印颜色的描述而不是哈希时,颜色再次显示相同。奇怪的是它可以处理一半的颜色。
for key in colorToAllocationCurrent.keys {
print("\(key.description) ---> \(currentColor!.description)")
print(key.isEqual(currentColor))
}
UIExtendedSRGBColorSpace 1 0 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 1 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 0.333333 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 0.666667 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false