2014-07-04 4 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) {}가 필요합니까? – kos

답변

3

글로벌 대기열에서 UI 업데이트를 수행하면 안됩니다. 그로 인해 어떤 일이 발생하기까지 오랜 시간이 걸립니다. 백그라운드 대기열에서 서버 응답을 받으면 dispatch_async(dispatch_get_main_queue)...을 사용하여 UI를 업데이트하십시오.

백그라운드 스레드에서 서버 응답을받지 못하면 dispatch_async를 전혀 사용할 필요가 없습니다.

+0

설명해 주셔서 감사합니다. 전 세계 대기열에서 dispatch_async (dispatch_get_main_queue)를 수행 할 수 있다고 가정합니다 .. – kos

+0

예 ... 블록 안에 있다면 전역 대기열에 디스패치되면 dispatch_async (dispatch_get_main_queue)를 사용하여 UI 업데이트를 위해 기본 스레드를 다시 호출 할 수 있습니다. – alivingston

관련 문제