iOS触及第一次和第二次调用之间的移动延迟

时间:2013-09-17 12:07:54

标签: ios objective-c touch

我的iOS应用中存在一些问题。

我已使用touchesMoved函数检查clock()中的时间戳,并使用当前值和之前值之间的差异。第1和第2事件之间的差异大于其他事件。

你有什么想法吗?

1 个答案:

答案 0 :(得分:2)

iOS不是硬实时操作系统。通常不期望触摸事件将以规则的频率/均匀周期传递。您不应该构建您的应用程序以依赖它。事件通过主线程传递,可能会被其他处理(绘图等)延迟

编辑:如果您在第一次触摸和第二次触摸之间的时间段内看到巨大的差异(相对于后续触摸事件之间的时段),则第一步是在“仪器”中运行应用程序Profiler模板,用于查看您在主线程上为响应第一次触摸而执行的某些工作是否导致延迟。如果延迟是你自己做的,那么修复这是第一个业务的顺序。

除此之外,您可以尝试使用各种信号处理方法将数据重新采样为统一的周期性数据,但问题是这些算法中的任何一种都无法提供第一个重新量化的点,直到最少第二个(更有可能是第三个甚至更晚的)事件进来,所以如果主要问题是“第二个事件不是你想要的”,那么这对你没有帮助。

另一个好的测试:尝试制作一个空的单视图示例应用程序,除了在事件进入时记录事件 - 如果你在那个简单的示例应用程序中看到第一次和第二次触摸之间的相同“奇怪”延迟,那么这就是“它是怎么回事”,你可以不再浪费时间来改变操作系统的行为,转而采用不同的方法/解决方案。