2013-06-21 74 views
0

當我通過網絡發送一個網絡請求時,我在一個完成塊中得到結果。在這個塊中,我解析並使用那個類的委託,我告訴視圖控制器檢查數據。從線程錯誤調用委託方法

VC在表視圖上調用reloadData。唯一的是,如果我使用委託reloadData命中或錯過(有時它的工作原理)。但是,如果我發佈通知,那麼它可以很好地工作。

我認爲這個問題與從afNetworking塊調用的委託有關,因爲它位於不同的線程上。我不把它放在那裏,但我認爲AFN會自動多線程化請求。

爲什麼會發生此問題?

+0

你在secondary thread上調用afnetworking? – Durgaprasad

+0

不,我想他們multiThread對我來說 –

+0

UI操作必須在主線程中執行。這是問題嗎? – Raj

回答

1

@Durgaprasad是對的。可能是他的副本。還在給它添加一些條件。試試吧,

if ([NSThread isMainThread]) 
{ 
    [self.tableView reloadData]; 
} 
else 
{ 
    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 

} 
+0

好的,我會試試這個。不會dispatch_async到主線程工作嗎? –

+0

儘管我對GCD沒有太多的知識,但它仍然可以工作。 –

0

我認爲你稱爲二級線程上的網絡連接。並從那個調用[tableView reloadData];這將讓崩潰,因爲你不能改變任何其他線程的用戶界面。你需要使用主線程。試試這個。

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
+0

我先回答了。和它的正確。仍然沒有接受或+1。 ÿ? – Durgaprasad

相關問題