Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么这个循环只运行一次?_Objective C_Loops - Fatal编程技术网

Objective c 为什么这个循环只运行一次?

Objective c 为什么这个循环只运行一次?,objective-c,loops,Objective C,Loops,只希望屏幕根据奇数或偶数条件反复闪烁蓝色/红色一段时间,但它只运行一次,而不是30000次。我错过了什么 -(IBAction) changeBackgroundColor:(id)sender { for (int y = 0; y < 30000; y++) { if(y % 2) { self.view.backgroundColor = [UIColor blueColor]; colorVi

只希望屏幕根据奇数或偶数条件反复闪烁蓝色/红色一段时间,但它只运行一次,而不是30000次。我错过了什么

-(IBAction) changeBackgroundColor:(id)sender
{
    for (int y = 0; y < 30000; y++)
    {

    if(y % 2)
        {
            self.view.backgroundColor = [UIColor blueColor];
            colorView.backgroundColor = [UIColor redColor];  

        } else {

            self.view.backgroundColor = [UIColor redColor];
            colorView.backgroundColor = [UIColor blueColor];   
        }
    }
}
-(iAction)changeBackgroundColor:(id)发件人
{
对于(int y=0;y<30000;y++)
{
如果(y%2)
{
self.view.backgroundColor=[UIColor blueColor];
colorView.backgroundColor=[UIColor redColor];
}否则{
self.view.backgroundColor=[UIColor redColor];
colorView.backgroundColor=[UIColor blueColor];
}
}
}

循环运行30000次,但屏幕只更新一次。要使对UIKit对象的更改生效,您需要退出到runloop。您可能想设置一个NSTimer,并在回调中切换背景颜色。

您正在“闪烁”30000次,而从未返回到iOS主系统,让它有机会显示每次闪烁的结果。你需要眨眼一次,回到iOS,回来,再次眨眼,回到iOS,等等。

如果你想获得眨眼效果,你可以(也可能应该)使用核心动画

我在这里回答了一个类似的问题。