2014-07-04 22 views
1
[tabViewController.tabBarItem setBadgeValue : [NSString stringWithFormat:@"%d",totalUnreadMessages]]; 

一切正常,但需要至少10秒才能更新。有什麼理由可能會發生這種情況嗎?無論如何強制更新?TabBar項目badgeValue更新但延遲

+2

你打電話給什麼時候?你能發佈圍繞你的'setBadgeValue'代碼的代碼嗎? – alivingston

+0

爲什麼要投票?它是從內部 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,(無符號長)NULL),^(無效) {; [自updateMessageTabBadge]})調用; 在appDelegate服務器響應後? – kos

+0

dispatch_async(dispatch_get_main_queue(),^(void){} required? – kos

回答

3

您不應該在全局隊列上執行UI更新 - 這就是爲什麼在發生任何事情之前您經歷了長時間的延遲。如果您在後臺隊列中收到服務器響應,請使用dispatch_async(dispatch_get_main_queue)...更新您的用戶界面。

如果您沒有在後臺線程上收到服務器響應,則根本不需要使用dispatch_async。

+0

感謝您的解釋我假設dispatch_async(dispatch_get_main_queue)可以在全局隊列中完成 – kos

+0

是的......如果你在一個塊內在全局隊列上分派,您可以使用dispatch_async(dispatch_get_main_queue)來回調UI更新的主線程。 – alivingston