gpt4 book ai didi

ios - 为什么此代码在 64 位构建上表现不同? (iOS/UIColor/UIKeyedArchiver)

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:15 24 4
gpt4 key购买 nike

代码:

UIColor * color = [UIColor colorWithHue:0.3 saturation:0.2 brightness:0.2 alpha:1];
CGFloat r,g,b,a;

[color getRed:&r green:&g blue:&b alpha:&a];

NSData * colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
UIColor * unarchivedColor = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];

[unarchivedColor getRed:&r green:&g blue:&b alpha:&a];


正如预期的那样,在 32 位构建中,unarchivedColor 和 color 具有完全相同的 rgb 值。在 arm64 构建中,unarchivedColor 和 color 在小数点后第 9 位开始出现差异。

换句话说,归档/取消归档 UIColor 会修改 arm64 上的颜色……我希望这不会发生。这是怎么回事,有没有办法解决这个问题?

最佳答案

差异可能是因为在 32 位上,CGFloat 是一个float,而在 64 位下它是一个double

尝试使用 double 而不是 CGFloat。或者只是接受在 64 位下,您将获得更高精度值的事实。

关于ios - 为什么此代码在 64 位构建上表现不同? (iOS/UIColor/UIKeyedArchiver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com