Objective c 如何修复NSTimer中的主要延迟?

Objective c 如何修复NSTimer中的主要延迟?,objective-c,xcode,nstimer,Objective C,Xcode,Nstimer,在我制作的一个相当简单的应用程序中,我使用了许多NSTimer,其中一个以.01秒的速度运行,我使用它来更改多个图像的位置。这导致了严重的滞后。我怎样才能解决这个问题?请详细解释,因为我对应用程序开发相当陌生。来自NSTimer文档(重点:我的): 计时器不是实时机制;只有当其中一个 已添加计时器的运行循环模式正在运行且可启用 检查计时器的启动时间是否已过。因为各种各样的 输入源一个典型的运行循环管理,有效解决 计时器的时间间隔限制为50-100 毫秒。如果计时器的触发时间发生在长调用或 当运行

在我制作的一个相当简单的应用程序中,我使用了许多NSTimer,其中一个以.01秒的速度运行,我使用它来更改多个图像的位置。这导致了严重的滞后。我怎样才能解决这个问题?请详细解释,因为我对应用程序开发相当陌生。

来自NSTimer文档(重点:我的):

计时器不是实时机制;只有当其中一个 已添加计时器的运行循环模式正在运行且可启用 检查计时器的启动时间是否已过。因为各种各样的 输入源一个典型的运行循环管理,有效解决 计时器的时间间隔限制为50-100 毫秒。如果计时器的触发时间发生在长调用或 当运行循环处于不监视计时器的模式时 直到下次运行循环检查计时器时,计时器才会启动。 因此,计时器可能触发的实际时间可以是 预定点火时间后的一段重要时间

如果要以显示频率工作,请参阅
CADisplayLink

但是,您应该首先了解您的程序现在在哪里花费时间,以了解是什么使它变慢(profiler)。

来自NSTimer文档(重点:我的):

计时器不是实时机制;只有当其中一个 已添加计时器的运行循环模式正在运行且可启用 检查计时器的启动时间是否已过。因为各种各样的 输入源一个典型的运行循环管理,有效解决 计时器的时间间隔限制为50-100 毫秒。如果计时器的触发时间发生在长调用或 当运行循环处于不监视计时器的模式时 直到下次运行循环检查计时器时,计时器才会启动。 因此,计时器可能触发的实际时间可以是 预定点火时间后的一段重要时间

如果要以显示频率工作,请参阅
CADisplayLink


但是,您应该首先了解您的程序现在在何处花费时间,以了解是什么导致它变慢(探查器)。

如果您每10毫秒执行一次操作,则执行时间最好不要超过10毫秒,可能是1毫秒。此外,鉴于屏幕刷新时间在15到30毫秒之间,更频繁地更新视图没有什么意义。如果您每10毫秒执行一次操作,那么最好在10毫秒内执行,也许是1毫秒。此外,鉴于屏幕刷新时间在15到30毫秒之间,更新视图的频率比这更频繁也没有什么意义。