在我的iPhone應用程序中,我有一個輔助線程用於在後臺執行任務,而每隔幾毫秒,必須更新視圖(而不是主線程)。我曾嘗試下面的代碼在我UIView子類:UIView setNeedsDisplay不在主線程中?
[self performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:NO];
這在模擬器上的偉大工程,但是,我的設備上,這是非常laggy。我能想到的唯一的事情是主線程與UIKit的常規例程陷入了僵局,這意味着我們的setNeedsDisplay會在它應該(大約1/2秒後)被調用的時候。我認爲這是因爲在其他代碼中,基於用戶交互,我立即調用setNeedsDisplay,並且它沒有任何延遲地正常工作。輔助線程上的後端計算比用戶界面線程上的少。這在我的應用程序中導致了一些非常糟糕的視覺效果。
因此,總結一下,我該如何解決這個問題?
UPDATE:
有另一種辦法,我要告訴它需要對自己進行刷新X次秒的看法?如果可能的話,這最終可能會對我有更好的表現。我已經試過CADisplayLink沒有成功...
這將是一個很好的優先事項?我有它設置爲0.1,它仍然滯後.. – 2011-03-22 17:25:31
沒關係,我用'[NSTimer scheduledTimerWithTimeInterval:0.1目標:自我選擇器:@選擇器(setNeedsDisplay)userInfo:nil重複:YES];'現在似乎工作正常。 – 2011-03-22 18:34:32