在我的 iPhone 应用程序中,我有一个辅助线程,用于在后台执行任务,每隔几毫秒,必须更新视图(而不是从主线程)。我在 UIView 子类中尝试了以下代码:
[self performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:NO];
这在模拟器上效果很好,但是在我的设备上,它非常滞后。我唯一能想到的是主线程被 UIKit 的常规例程所困,这意味着我的 setNeedsDisplay 在它应该调用的时候被调用了很长时间(大约 1/2 秒后)。我认为这是因为在其他代码中,基于用户交互,我立即调用 setNeedsDisplay,它运行良好,完全没有任何延迟。辅助线程上的后端计算少于用户界面线程上的后端计算。这会在我的应用程序中导致一些非常糟糕的视觉效果。
所以,总结一下,我该如何解决这个问题?
更新:
我还有另一种方法可以告诉视图它需要每秒刷新 x 次吗?如果可能的话,这最终可能对我来说是更好的表现。我试过 CADisplayLink 没有成功...