0

我的 iOS 应用程序有一些问题。

我已经检查了touchesMovedwithclock()函数中的时间戳,并使用了当前值和以前值之间的差异。第一次和第二次事件之间的差异比其他事件更大。

你有什么想法吗?

4

1 回答 1

2

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

编辑:如果您发现第 1 次和第 2 次触摸之间的周期存在巨大差异(相对于后续触摸事件之间的周期),第一步是在 Instruments 的 Profiler 模板中运行该应用程序,以查看您是否有一些工作重新在主线程上响应第一次触摸导致延迟。如果延迟是您自己做的,那么解决这个问题是首要任务。

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

另一个很好的测试:尝试制作一个空的单视图示例应用程序,它只会在事件进入时记录它们——如果你在那个微不足道的示例应用程序中看到第一次和第二次触摸之间存在相同的“奇怪”延迟,那么这只是“它是怎么回事”,你可以停止浪费时间试图改变操作系统的行为并转向一些不同的方法/解决方案。

于 2013-09-17T12:12:25.597 回答