使用可可和C++时刷新屏幕上数据的正确方法是什么

What is the proper way to refresh data on screen when using Cocoa and C++?

本文关键字:数据 是什么 方法 屏幕 可可 C++ 刷新      更新时间:2023-10-16

我正在为OS X制作一个应用程序,使用Cocoa作为图形界面。但我的主要算法是C++制造的。该界面仅显示NSTextFields和NSLevelIndicator中的算法的一些值。

屏幕需要实时刷新算法中的数据。

我所做的是一个NSThread,它从算法中读取数据并放在屏幕上。但我不认为这是正确的方式。

你有什么建议?

通常,您应该只从主线程更新 GUI。 您可以使用如下代码将一些工作提交到主线程:

dispatch_async(dispatch_get_main_queue(), ^{
    [myTextField setStringValue:@"a new string"];
});

几种方法可以使用:

  • 在主线程上使用重复的 NSTimer 从算法中获取值,然后显示它们
  • 使用Ken Thomases所写的算法中的dispatch_async
  • 从算法中使用 performSelectorOnMainThread
  • 让算法将通知发布到 NSNotificationCenter