为什么 UIColor 的值在 serialization/deserialization 之后发生变化?

Why does a UIColor's values change after serialization/deserialization?

如果你创建了一个颜色然后运行 [color isEqual:[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:color]]],你会发现答案可能是否定的,至少在我的测试中,值在 0 和 1 之间(不包括)。新颜色非常非常接近,但它与旧颜色并不完全相同,至少在其内部表示方面是这样。也许它具有相同的实际输出颜色,考虑到它使用 64 位来表示只需要 8 位的内容。

有什么想法吗?

我认为这与连载时颜色的表现有关。它可能表示为浮点数,如果是这样的话 可能会发生。我认为如果您使用字符串或其他方式实现自己的序列化,就可以避免这种情况。