12

注意:这是我已经找到答案的问题。似乎鼓励在找到有趣的答案后发布问题,所以我发布了这个。其他人可能会遇到同样的问题并发现这很有用。


我有一个生成图表的 iOS 应用程序。发布更新后不久,一位用户向我发送了这封恐慌的电子邮件:

“最新的更新修改了曲线......没有看到更多的增长曲线和插入的数据被表示为一条下降的线......在你看得很清楚之前

帮我”

我让他发送屏幕截图并提供更多详细信息。他有一部 iPhone 3G,这就是女孩图表的样子。大多数点都绘制在错误的坐标处:它们似乎绘制在 (x,x) 而不是 (x,y) 处。

错误显示的屏幕截图

与它的外观进行比较(忽略颜色的差异——粉色代表女孩,蓝色代表男孩):

正确显示的屏幕截图

经过多次试验,我给他发了一个以前版本的重建版本(对他来说很好用),但它仍然不起作用。所以最后看起来更新中的代码更改与它无关。可能是什么解释?

4

1 回答 1

11

iPhone 最初和 iPhone 3G 使用 armv6 架构,后来型号为 armv7。对此 Stack Overflow 问题的回答和Apple 开发人员论坛线程指出了 XCode 4.2 编译器生成的 armv6 Thumb 代码中的一个问题,该问题导致对某些数据结构的算术运算,特别是CGPoint返回完全错误的结果。比如 x 值被写入 y 值。

解决方案是将-mno-thumb编译器选项添加到 XCode 项目中。这告诉编译器不要发出 Thumb 模式代码,从而绕过错误。另一种解决方案是切换回没有此错误的早期 XCode(iOS5 之前的 SDK)。

所以错误在编译器中!多么酷啊?:) 在二十年的发展中,我还没有遇到过这样的事情。

这是一个屏幕截图,显示在哪里添加此编译器选项,如果它可以帮助任何人:

在此处输入图像描述

于 2011-12-05T20:26:10.333 回答