iOS标签文本更改为sleep()

Mom*_*ntH 4 ios

我找到了有趣的东西..下面的代码没有显示@"One",它在3秒延迟后显示@"两个"..我认为@"One"需要显示然后3秒延迟然后@"2 "需要弹出......我错了吗?

self.statusLabel.text = @"One";
sleep(3);
self.statusLabel.text = @"Two";
Run Code Online (Sandbox Code Playgroud)

谢谢..

rge*_*rge 7

如果你在主线程上执行此操作,那sleep(3)将阻止它,冻结应用程序3秒钟.事件处理(包括重新绘制UI等内容)将不会发生,直到结束.

要获得您期望的结果,请尝试以下方法:

[self.statusLabel setText:@"One"];
[self.statusLabel performSelector:@selector(setText:)
                       withObject:@"Two"
                       afterDelay:3.0];
Run Code Online (Sandbox Code Playgroud)

第一次更改,然后将执行第二次更改的调用排队,以便将来发生.然后将控制权返回给OS以进行任何必要的重绘.