我的应用程序是一个跟随另一个应用程序窗口的视频窗口。我正在捕捉屏幕,找到其他应用程序的位置并相应地移动我的。我有一个跟踪线程,总是捕获并跟踪正确的位置,如果它已被更改,则调度更新主线程上的位置:
void tracingThread()
{
while(true)
{
captureAndTrack();
if(positionChanged)
{
dispatch_async(dispatch_get_main_queue(), ^{ setWindowPos(); });
}
}
}
void setWindowPos()
{
[window setFrame:_newFrame display:YES];
}
除了拖动其他应用程序时setFrame非常滞后这一事实外,一切正常。我的猜测是因为发送的事件数量。但也许还有别的东西。任何想法如何才能提高性能?