【发布时间】:2014-03-11 11:41:45
【问题描述】:
代码:
UIColor * color = [NSKeyedUnarchiver unarchiveObjectWithData:self.colorData];
if ([countedColorSet containsObject:color]) {
//Do stuff
}
怎么了:
没有错误,但“Do stuff”永远不会运行(64 位)......即使“颜色”与存储在集合中的颜色相同。在 32 位上没有改变其他条件的测试工作正常,并且“Do stuff”运行。
所以:
我要疯了吗?我可能会错过什么?
【问题讨论】:
-
你是只归档32bit环境下的数据吗?
-
@kukushi nope,在模拟器中重新安装应用程序以确保。归档的代码是:event.colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
-
需要更多细节。你有没有对数据做一些其他的事情,比如写/读?你所说的“相同”是什么意思,它们是完全相同的对象(相同的地址)还是只是相同的颜色类型?
-
@kukushi 仔细检查后,我发现归档和取消归档 UIColor 对象会非常轻微地改变颜色的 rgb 值 - 只有当 CGFloat 具有更高的准确性时才会在 arm64 上明显。不知道为什么会这样,我不确定是否有办法解决这个问题?
标签: ios iphone objective-c ipad arm64