2011-12-05 34 views
12

注意:這是我已經找到答案的問題。似乎在發現一個有趣的答案is encouraged後發佈一個問題,所以我張貼這個。其他人可能會遇到同樣的問題,並認爲這很有用。在iPhone 3G上座標全錯嗎?它可能是你的編譯器


我有一個iOS應用程序生成圖表。發佈更新後不久,用戶發送我這個恐慌的電子郵件:

「的最新更新修改了曲線...沒有看到更多的增長 曲線和插入的數據被表示爲線下降... 之前,你可以看得很清楚

幫助我」

我讓他送一個屏幕截圖,並給予更多的細節。他有一個iPhone 3G,這是女孩的圖表。大多數點被繪製在錯誤的座標上:它們看起來是在(x,x)而不是(x,y)處繪製的。

Screenshot of the buggy display

本應該是怎樣看比較(忽略顏色的區別 - 紅色是女孩子,藍色爲男孩):

Screenshot of a correct display

多次試驗後,我送他是以前版本的重建版本(對他來說工作正常),但它仍然不起作用。所以最終看起來更新中的代碼更改與它無關。什麼可能是解釋?

+1

也許他在這個時刻寫它。 – sidyll

回答

10

iPhone原創和iPhone 3G使用armv6架構,後來型號armv7。對this Stack Overflow questionan Apple developer forum thread的回答指向由XCode 4.2編譯器生成的armv6 Thumb代碼中的一個問題,該問題導致某些數據結構(特別是CGPoint)的算術運算返回完全錯誤的結果。如將x值寫入y值。

解決方案是將-mno-thumb編譯器選項添加到XCode項目。這告訴編譯器不要發出Thumb模式代碼,從而繞過該錯誤。另一個解決方案是切換回早期的XCode(iOS5之前的SDK),它沒有這個bug。

所以這個bug是在編譯器!多麼酷啊? :)在二十年的發展中,我還沒有遇到過這樣的事情。

這裏表示將加入這個編譯器選項,如果它可以幫助任何人截圖:

enter image description here

相關問題