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

xcode – 延迟更新标签栏项目的徽章价值,第1张

概述我有一个每5秒运行一次的功能来检查新消息,如果触发了新消息我正在使用下面的代码更新标签栏项目的徽章值 NSString *chkUrl = @"http://domain.com/script.php"; NSURL *url = [[[NSURL alloc] initWithString:chkUrl] autorelease]; NSError *error = nil; 我有一个每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 – 延迟更新标签栏项目的徽章价值全部内容,希望文章能够帮你解决xcode – 延迟更新标签栏项目的徽章价值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1008179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存