如何让 NSView 在循环时立即显示?

How to make NSView display immediately while in loop?

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

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

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],但到目前为止,我只看到循环结束后视图更新。

如果thread/UI被屏蔽了也没关系,只是为了可视化我自己的计算。

睡觉

usleep(useconds_t)

示例一秒

usleep(1000000);