有多少NSTimers太多了?

Rex*_*ids 5 iphone nstimer

在iPhone OS设备中,有多少同时运行的NSTimers会太多?我有一堆例程被一个计时器调用,每秒发射25次,事情非常不连贯,缓慢而且沉重.我正在考虑添加一个或多个额外的NSTimers来分配工作量,但我担心有多少可以使用.这可能在一定程度上取决于我实现的每个单独计时器的点火率,因此我们假设点火率为每秒20~30次.那么,有多少NSTimers太多了?

Rog*_*Rog 5

在内部,NSTimers都是在单个硬件计时器上实现的.操作系统为所有正在运行的应用程序保留了一个中央计时器列表,并为最快的事件安排单个硬件计时器.

添加计时器不会改变应用程序的行为.也就是说,与基本上单个流程应用程序添加线程使运行时管理更容易的方式相同,添加计时器可以帮助您对问题进行分区.

鉴于你引用的时间,我猜这个计时器是游戏的帧更新同步或类似的东西.我会建议一些事情:

  1. 将当前的绘图代码拆分为一个单独的线程,然后在其中运行(相同的)定时器代码.这应该给你更多的控制权.

  2. 分析您的代码,看看在每个1/25插槽中执行了多少处理 - 您可能(可能是)只需要优化代码.