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

时间:2012-06-07 21:56:40

标签: c++ objective-c macos cocoa

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

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

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

你有什么建议?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

您可以采用以下几种方法:

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