我正在制作一个游戏,我试图在视图加载时将“播放”按钮滑动到屏幕上并在到达中心时停止(而不是在视图加载时刚刚出现在屏幕上的按钮)。
我的viewDidLoad函数中有以下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
while(playButton.center.x != 71)
playButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.002 target:self selector:@selector(playButtonMove) userInfo:nil repeats:YES];
}
此刻发生的一切都是当我运行应用程序时,屏幕保持黑色,当我关闭应用程序时,Xcode中出现一个窗口,上面写着“由于内存错误而终止”。
编辑: 这是我的playButtonMove函数:
-(void)playButtonMove {
playButton.center = CGPointMake(playButton.center.x - 1, playButton.center.y);
}
答案 0 :(得分:2)
卸下:
while(playButton.center.x != 71)
playButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.002 target:self selector:@selector(playButtonMove) userInfo:nil repeats:YES];
并将其添加到您的文件中:
- (void)viewDidAppear:(BOOL)animated {
[UIView animateWithDuration:.25 animations:^{
playButton.center = CGPointMake(71, playButton.center.y);
}];
}
您的应用程序正在运行,因为您在有机会开火之前重新分配了播放按钮。因此,您的while语句将始终为true。基本上你所有的应用程序现在正在创建成千上万的NSTimers,直到它崩溃。你不应该用它做动画。使用苹果内置的动画api's。