使用LLVM-GCC解决运行iOS 4.2.1的第二代设备问题的影响

jen*_*nen 5 compiler-optimization llvm-gcc touchesmoved ios-4.2

我有一个使用触摸事件在屏幕上绘制的应用程序.我UITouch locationInView用来恢复CGPoint触摸.问题是x和y坐标总是相同的 - 但仅限于运行iOS 4.2.1的第二代设备,并且仅当我的应用程序是在发布模式下构建时.直接从一个touchesMovedtouchesEnded事件对象进行触摸时,这似乎也只是一个问题,因为我的按钮正确地响应了触摸.

感谢http://getmoai.com/forums/new-users/ios-touch-sensor-y-co-ordinate-always-the-same-as-x/上的帖子我能够通过使用来解决问题LLVM-GCC编译器而不是较新的LLVM 3.0编译器,并使用优化级别0.

有趣的是,使用GCC编译器在touchesEnded更改优化级别时-O0更正了我收到的触摸位置,以更正我收到的触摸位置touchesMoved.我无法解释为什么会这样,但是现在我欣喜若狂,我的应用正在研究这些设备.

我的问题是 - 使用旧编译器将我的应用程序交付到商店有什么缺点?(我理解优化级别的影响.)是否有任何方法来配置项目,以便我使用较旧的编译器和较低的优化级别仅适用于iOS 4.2.1和/或第二代设备?

小智 1

我正在使用这个黑客:

// not working (location.x == location.y)
CGPoint location = [touch locationInView:_myView];
//

// working!
static CGPoint location;
location = [touch locationInView:_myView];
//
Run Code Online (Sandbox Code Playgroud)