分配会导致特定iOS配置出现意外结果

时间:2012-01-31 04:09:54

标签: iphone objective-c ios

我的iOS应用程序中出现了一些非常奇怪的行为。它在模拟器和新硬件上运行良好,但是当我使用老式iPod Touch(软件版本4.2.1)上的Release配置进行测试时,它无法正常工作。这是我拖动对象的代码(UIView子类):

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event 
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.superview];

// Set the correct center when touched 
touchPoint.x -= deltaX;
touchPoint.y -= deltaY;

NSLog(@"Touch moved1: %f %f, %f %f", touchPoint.x, touchPoint.y, self.center.x, self.center.y);
self.center = touchPoint;
NSLog(@"Touch moved2: %f %f, %f %f\n", touchPoint.x, touchPoint.y, self.center.x, self.center.y);
}

这是生成的日志输出:

Touch moved1: -43.000000 45.000000, 45.000000 41.000000
Touch moved2: 45.000000 45.000000, 45.000000 41.000000
Touch moved1: -44.000000 45.000000, 45.000000 41.000000
Touch moved2: 45.000000 45.000000, 45.000000 41.000000

正如您所看到的,作业self.center = touchPoint以某种方式更改了touchPoint的值。 x和y值touchPoint不等于拖动时跟随手指,而是等于touchPoint.y,这会阻碍向对角线的移动。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

该设备是否为ARM6设备?

在某些版本的Xcode中,ARM6代码生成中存在一个已知错误,导致此类问题。尝试打开“其他c标志”构建设置部分中的-mno-thumb选项,看看它是否有帮助。如果是这样,您可以有条件地为ARM6版本打开它。

请参阅:This item