-(void)buttonClick:(id)sender
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
从理论上讲,屏幕左上角的网络活动微调器应该打开,旋转一段时间,然后关闭......但是,它永远不会出现。
-(void)buttonClick:(id)sender
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
//[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
注释掉“= NO”后,我注意到程序运行了整个 for 循环,然后在 for 循环完成后,微调器终于开始旋转。
-(void)viewWillAppear:(BOOL)animated
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES
}
-(void)buttonClick:(id)sender
{
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
现在,当视图出现时,指示器开始旋转。当我单击按钮时,它会在循环运行时继续旋转。当 for 循环结束时,微调器按预期停止。
-=-=-=-=-=-=-=-=-=-
我的问题是,为什么在前两个示例中的 for 循环之后,微调器才会开始旋转?
-=-=-=-=-=-=-=-=-=-
到目前为止我的想法:
至于为什么微调器不会在这个特定示例中启动......也许它发送了消息,但直到 for 循环之后才被执行,因为编译的代码是如何工作的?
这样做的正确方法可能是启用网络活动指示器,然后关闭另一个执行网络活动的线程,然后该线程在完成后将消息发送回主线程(大概还有它检索到的数据)
-=-=-=-=-=-=-=-=-
任何建议/答案表示赞赏。提前致谢。请记住,此应用程序适用于 iPad。