2012-01-31 41 views
1

我在我的iOS應用程序中出現一些非常奇怪的行爲。它可以在模擬器和新硬件上正常工作,但是當我使用舊版iPod Touch(軟件版本4.2.1)上的Release配置進行測試時,它無法正常工作。這是我的代碼來拖動對象(UIView子類):分配導致意外的結果與特定的iOS配置

- (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

設備是ARM6設備嗎?

在某些版本的Xcode中存在一個已知的ARM6代碼生成錯誤,導致類似這樣的問題。嘗試打開「其他c標誌」版本設置部分中的-mno-thumb選項,看看它是否有幫助。如果是這樣,您可以有條件地將其打開,僅用於ARM6構建。

參見:This item

+0

完美解決了這個問題。謝謝! – Ned 2012-01-31 23:20:01