4
새 메시지가 나타나면 매 5 초마다 실행되는 기능이 있습니다. 아래 코드를 사용하여 탭 표시 줄 항목의 배지 값을 업데이트합니다.Tab Bar 항목의 배지 값 업데이트시 지연
NSString *chkUrl = @"http://domain.com/script.php";
NSURL *url = [[[NSURL alloc] initWithString:chkUrl] autorelease];
NSError *error = nil;
NSStringEncoding encoding;
NSString *returnHTML = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&encoding error:&error];
int totalNewMessages = [[returnHTML stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] intValue];
AppDelegate *mainDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"badge before:%@",[[mainDelegate.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue);
[[mainDelegate.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue = [NSString stringWithFormat:@"%d",totalNewMessages];
NSLog(@"badge after:%@",[[mainDelegate.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue);
문제는 배지 값이 즉시 업데이트되지 않는다는 것입니다. 어쩌면 4 번째 호출 중 3 번째 호출에서 업데이트 될 것입니다! 뭐 잘못 됐어! 아니면 iOS의 버그입니까?
해결 방법으로 모든 업데이트에서 위의 행을 10 번 반복했지만 다시 업데이트하지 않으므로 배지 값을 업데이트하는 데 지연이 발생하므로 업데이트 행을 다시 실행하지 않아도됩니다!
BTW,이 문제는 내가 문제 :
는 5 초마다 실행중인내 기능은 아래의 코드 내부에 이었다 발견 아이폰 OS 6.1
배지에 전달되는 내용을 보려면 중단 점을 설정하여 'totalNewMessages' 값을 검사하지 않는 이유는 무엇입니까? 어쩌면 비동기 호출이 있니? 첫 번째 가치는 어떻게 얻습니까? – Alladinian
@Alladinian 배지 값을 업데이트하기 전에 & 업데이트 한 후에 NSLog에서 올바른 값을 표시하지만 탭 표시 줄 항목 배지에서 몇 초 지연됩니다! – DeZigny
'totalNewMessages'의 값을 설정하는 곳에 코드 부분을 게시 할 수 있습니까? – Alladinian