2014-07-04 20 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