Iphone 当不使用游戏框架时,如何处理页面帧定时?

Iphone 当不使用游戏框架时,如何处理页面帧定时?,iphone,objective-c,Iphone,Objective C,如果不使用cocoa2d等,如果必须手动编码,您将如何控制帧的速度 i、 e.如果您希望以每秒50帧的速度运行(或行业最佳实践是什么?使用CADisplayLink在每一帧调用一次。这将是最高60帧每秒。如果你的代码做了太多的工作,你会被调用的次数减少,你的UI会在低于40fps的速度下感觉很慢 另一种方法是安排NSTimer,但它有一些问题。如果您的runloop没有准备好按时调用计时器,调用将被跳过,因此不能保证任何帧速率 来自苹果的医生 一个重复的计时器总是定时的 基于预定的发射 与实际射

如果不使用cocoa2d等,如果必须手动编码,您将如何控制帧的速度


i、 e.如果您希望以每秒50帧的速度运行(或行业最佳实践是什么?

使用CADisplayLink在每一帧调用一次。这将是最高60帧每秒。如果你的代码做了太多的工作,你会被调用的次数减少,你的UI会在低于40fps的速度下感觉很慢

另一种方法是安排NSTimer,但它有一些问题。如果您的runloop没有准备好按时调用计时器,调用将被跳过,因此不能保证任何帧速率

来自苹果的医生

一个重复的计时器总是定时的 基于预定的发射 与实际射击相反的时间 时间例如,如果计时器 预定在特定时间开火 之后每5秒 计划的发射时间将始终缩短 在原来的5秒时间 间隔,即使实际开火 时间被耽搁了。如果点火时间 它被延迟到超过一秒 或更多的预定点火时间, 计时器仅为此启动一次 时间段;然后计时器开始计时 发射后,重新安排 系统中的下一个计划发射时间 未来