Моя программа работает так, как я хочу, как на симуляторе iPhone, так и на самом iPhone при использовании отладочной сборки. Однако, когда я изменяю его на сборку релиза, он работает на симуляторе iPhone, но не на устройстве. Я пытаюсь анимировать шарик по экрану с помощью таймера, и шарик должен отскакивать от боков, если он сталкивается с краями экрана. Это прекрасно работает для отладочных сборок, но сборка выпуска работает только на симуляторе, а не на устройстве. Мяч даже не движется на устройстве с релизом билда.
У меня такое ощущение, что это связано с уровнем оптимизации, который изменяется при переключении с отладки на сборку релиза. Если это правда, как я могу изменить свой код, чтобы он лучше соответствовал уровню оптимизации?
Контроллер представления вызывается с initWithNibName: который содержит:
CGRect ballRect = CGRectMake(133, 424, 55, 56);
newBall = [[Ball alloc] initWithFrame: ballRect];
[self.view addSubview: newBall];
[self setImage: [UIImage imageNamed: @"Red.png"]];
Ball * newBall был объявлен в файле интерфейса. Мяч правильно отображается на экране с правильным изображением во всех билдах.
Таймер для перемещения мяча вызывается, когда пользователь нажимает на экран:
-(void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event{
touch = [touches anyObject];
touchPoint = [touch locationInView: self.view];
dx = touchPoint.x - newBall.center.x;
dy = touchPoint.y - newBall.center.y;
newBallTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0/50.0 target: self selector: @selector(moveBall) userInfo: nil repeats: YES];
}
CGPoint TouchPoint, UITouch * touch, float dx, float dy и NSTimer * newBallTimer также были объявлены в файле интерфейса.
Вот мой код для перемещения мяча и обнаружения столкновений:
-(void) moveBall
{
newBall.center = CGPointMake( newBall.center.x + dx, newBall.center.y + dy );
// left boundary
if( newBall.frame.origin.x <= 20 )
{
dx = abs(dx);
}
else if( newBall.center.x >= 280 )
{
dx = -abs(dx);
}
}
В сборке релиза на устройстве мяч не двигается. Вместо этого он, кажется, отправляется в нижнюю часть экрана и остается там.
Любые предложения / решения / идеи высоко ценятся.
Заранее спасибо!