由于iOS 7,视图不会出现

我用iOS 7在iPhone上尝试了我的应用程序,除了一件事以外,一切正常。 在iOS 6版本中,当我执行下面的代码时,加载视图(带有activityindicator)在加载结束时出现并消失。 在iOS 7上,视图在加载过程中完全不显示。

self.loadingView.alpha = 1.0; [self performSelector:@selector(accessServices) withObject:nil afterDelay:0.0f]; 

AccessServices方法:

 - (void)accessServices { // Getting JSON stuff // The code is OK, I just don't copy/paste it here self.loadingView.alpha = 0.0; } 

怎么了 ? 这是一个iOS 7的错误?

我不希望上面的代码的行为发生变化,但我并不感到惊讶,它可能不会按照您的预期方式工作。 如果你在主队列上做JSON的东西,你的代码将取决于什么时候UI更新发生的特性,而不是明确的。

您可能希望将JSON代码显式分派给后台队列,然后将最终的UI更新分派回主队列。 这样的标准模式是:

 self.loadingView.alpha = 1.0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Getting JSON stuff // The code is OK, I just don't copy/paste it here dispatch_async(dispatch_get_main_queue(), ^{ self.loadingView.alpha = 0.0; }); }); 

你可以使用GCD(比如上面的)或者操作队列,或者其他什么。 但是这个想法是一样的,UI更新应该发生在主队列上,但是在后台队列上应该发生任何远程计算成本高昂或者其他问题。

无论iOS版本如何,此模式都可以正常工作