Objective c 设备的定时性能

Objective c 设备的定时性能,objective-c,events,nstimer,game-engine,Objective C,Events,Nstimer,Game Engine,我想运行一个计时器来观察游戏中发生的一些事件 我会在did load函数中包含计时器。因此,计时器将永久性地检查事件1是否发生 [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(check_status_event1:) userInfo:nil repeats:YES]; 我还尝试设置一个指向计时器的指针,以便在需要时使其失效 - (IBAction)che

我想运行一个计时器来观察游戏中发生的一些事件

我会在did load函数中包含计时器。因此,计时器将永久性地检查事件1是否发生

[NSTimer scheduledTimerWithTimeInterval:0.001
    target:self
    selector:@selector(check_status_event1:)
    userInfo:nil
    repeats:YES];
我还尝试设置一个指向计时器的指针,以便在需要时使其失效

- (IBAction)check_status_event1:(id)sender
{
    //_stepper_event1_status_check.value (0 = no / 1 = yes)
    if (_stepper_event1_status_check.value == 1) {
        _stepper_event1_status_check.value = 0;  //reset stepper again
        [self event1_go:0];
    }else{}
}
问题:

0.001的间隔是否正常

对设备性能有很大影响吗?因为存在永久运行if语句(或更多)。当游戏通过home按钮发送到后台时,这是否也会使iPhone或iPad速度变慢

我可以同时使用更多的计时器吗?例如,当我运行其中10或20个时

这是捕捉比赛中发生的事件的正常方式吗?例如,2个对象的合并。我还设置了一些在1秒后使用计时器的代码(步骤1)。2秒后(步骤2)。3秒后(第3步)。。。。当我使用这样一个计时器时,我可以在这个时间开始下一步,而之前的步骤已经完成了。也许一步需要超过1秒。我不想使用动画,包括持续时间和延迟。也许iPad2在处理和阅读整个代码方面比iPad4慢。当第一步还没有完成时,我不想从第二步开始

但iOS设备的性能如何呢。这是个问题吗

多谢各位 菲利普

可能不会。“计时器时间间隔的有效分辨率限制为50-100毫秒”。您可以将其设置为0.001,但不太可能按时获取计时器

Does it maybe also make the iPhone or iPad slower, when the game is sent to background
不,它在后台时不会减慢设备的速度。当应用程序处于后台时,iOS会停止计时器

Can I use more of this timer at the same time? for example when I run 10 or 20 of them.
是的,你可以,但你可能会找到更好的解决办法

I don't want to use animateWithDuration and Delay.
那会让你的生活更轻松。iOS将进入extends,以使动画平滑,即使设备处于加载状态

Is this the normal way to catch an event that occur during the game?
不,除非您的游戏没有太多更新,例如没有动画的回合基础游戏。不保证计时器事件的传递时间。它可能会大幅下滑。您可能希望在每次迭代中平滑地更新游戏状态,这通常是一个帧。游戏中是否有帧更新循环?如果需要的话,那将是检查碰撞和计算时间的地方

你说的是注意到一件事。更好的设计是使用“推”而不是“拉”。当事件发生时,它会通知所有相关方,反之亦然

Is this the normal way to catch an event that occur during the game?