我剛碰到這種奇怪的情況。概念性問題:performSelectorOnMainThread做什麼?
我正在使用蘋果示例中的懶惰圖像加載技術。
當我在我的應用程序中使用該類時,它給了我要學習的主題,但不要在那裏實際發生的事情。
所以這裏去的情景:
我想大家都已經看到了蘋果lazytableimagesloading。
我重裝了我的桌子上整理數據的解析:
- (void)didFinishParsing:(NSMutableArray *)appList
{
self.upcomingArray = [NSMutableArray arrayWithArray:loadedApps];
// we are finished with the queue and our ParseOperation
[self.upcomingTableView reloadData];
self.queue = nil; // we are finished with the queue and our ParseOperation
}
但作爲結果的連接沒有開始和圖像不加載。當我完全照搬lazyimageloading和我換成上面的代碼用下面的代碼,它工作正常
- (void)didFinishParsing:(NSMutableArray *)appList
{
[self performSelectorOnMainThread:@selector(handleLoadedApps:) withObject:appList waitUntilDone:NO];
self.queue = nil; // we are finished with the queue and our ParseOperation
}
所以我想知道的是這背後的概念。
請讓我知道如果你不明白的問題或細節是不夠的,因爲我拼命想知道爲什麼它是這樣的?
所以nsurlconnection只能執行如果我在主線程執行表重裝,對不對? – harshalb 2010-04-15 13:31:43
@hib NSURLConnection與表重新加載無關。如果您有一個在後臺線程上執行的方法,但它需要在某個時候更新用戶界面,則必須在主線程上執行該用戶界面更新。 – 2010-04-15 19:07:23