Моя программа работает так, как я хочу, чтобы он и на iPhone симулятор и сам 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"]];
Бал * 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 * осязание, поплавок дх, поплавок ду и 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);
}
}
На релиз сборки на устройстве мяч не двигается. Вместо этого он, кажется, отправляется в нижней части экрана и остается там.
Любые предложения/решения/идеи заслуживают высокой оценки. Спасибо заранее!
Думаю, вам нужно будет показать нам код. Попытайтесь уменьшить код как можно больше, нам будет легче обнаружить ошибку, и иногда вы даже обнаружите ошибку самостоятельно в этом процессе. – zoul
Хорошо, что я разместил код. Надеюсь это поможет. – 2009-08-31 21:06:26
Сравните ваши две конфигурации сборки для различий. Возможно, у вас есть что-то определенное в отладке, но оно не определено в выпуске. Симулятор не всегда корректен, поэтому оставьте это из уравнения. – Jab