gpt4 book ai didi

xcode - 更新标签栏项目徽章值的延迟

转载 作者:行者123 更新时间:2023-12-01 02:27:27 25 4
gpt4 key购买 nike

我有一个每 5 秒运行一次以检查新消息的功能,如果触发了新消息,我将使用以下代码更新标签栏项目的徽章值

    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);

问题是徽章值没有立即更新!也许在第四个电话的第三个,它会被更新!我做错了什么!或者是iOS中的错误!

作为一种解决方法,我在每次更新时重复上述行 10 次,但它再次没有更新,所以问题是更新徽章值的延迟,这不是重新运行更新行的问题!

顺便说一句,这个问题发生在 Xcode 4.6 Simulator 和我的 iPhone 5 和 iOS 6.1

最佳答案

我发现了问题:)

我每 5 秒运行一次的函数在下面的代码中

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
[self checkNewMessages];
});

当我把它改成下面的时候,它就像一个魅力!
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self checkNewMessages];
});
});

关于xcode - 更新标签栏项目徽章值的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291604/

25 4 0