起初我使用 NSTimer 并遇到了帧速率卡在每秒 40 帧的问题。我已阅读有关使用 CADisplayLink 解决问题的信息。它似乎工作了一段时间,但最近,应用程序从 60 开始,然后过了一会儿(大约 5 - 20 秒),应用程序开始以 40 - 41 fps 运行并卡在那里。我正在剔除对象,以便在对象不在视野范围内时绘制较少,但它仍然卡在那里。一种似乎确实可以暂时解决问题(大约 10 秒)的不寻常方法是从 iphone 底部断开电线,然后重新连接。显然,这并不理想,但只是想知道为什么会发生这种情况以及为什么它会在某种程度上修复它,好像它重置了某些值或其他东西。任何帮助将不胜感激,谢谢。

最佳答案

你有没有检查过你是否真的丢帧?您使用的 CPU/GPU 是否达到每秒只能绘制 40 帧的程度,还是软件中的某个地方存在问题?

请记住,如果 CADisplayLink 无法触发屏幕刷新(由于主线程忙于绘制前一帧之类的事情),那么它可能会跳过它,因为它没有足够的时间来完成。因此,如果您的某些帧的绘制时间超过 0.01666... 秒,那么您将错过之后立即绘制帧的时间间隔,并且速度减慢可能看起来比实际情况更糟。

还请记住,移动设备并不总是能够快速绘制所有内容。 iPhone 4 中的 A4 处理器非常好,但要每秒填充 960x640 屏幕像素 60 次仍然是一项艰巨的任务。如果您的帧速率是 40fps 而不是 60fps,绝大多数用户不会注意到——人眼通常不会注意到抖动或屏幕延迟,直到您达到 20fps 或更低。

10-08 07:10