如何在循环中立即显示NSView?

时间:2016-09-02 12:01:48

标签: objective-c nsview setneedsdisplay

我有一个循环,迭代100万次对数据集进行一些计算。

为了显示这些计算的进度,我想定期在NSView中显示dataSet,比如每10,000次循环迭代,然后暂停1秒,这样我就可以看到dataSet以当前状态显示。

for(j=0; j<1000000; j++)
{
   ...do some calculations on dataSet

   if(j%10000 == 0){
      [myView display] //[myView drawRect:] will show current state of dataSet
   }

   ... pause for a second to see the dataSet in myView
}

所以在这种情况下,我想要10次显示更新,大约每秒1次。

我已尝试过各种各样的方法,从使用NSTimers到[NSThread sleepForTimeInterval],但到目前为止,我只看到循环结束后视图已更新。

线程/用户界面是否被阻止无关紧要,因为它只是可视化我自己的计算。

1 个答案:

答案 0 :(得分:1)

睡觉

usleep(useconds_t)

一秒的例子

usleep(1000000);