【问题标题】:This code works perfect on armv7 (32 bit) but not on arm64 (64 bit)此代码在 armv7(32 位)上完美运行,但在 arm64(64 位)上无法运行
【发布时间】: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


【解决方案1】:

通过 Apple 技术支持事件确认这是与 arm64 上的归档类相关的错误。他们的建议是构建一个自定义归档器类。

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 2015-07-11
    • 2010-09-16
    • 2016-08-26
    • 2012-04-23
    • 1970-01-01
    • 2010-10-18
    • 2011-05-13
    • 2018-09-17
    相关资源
    最近更新 更多