2

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

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

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

你有什么建议?

4

2 回答 2

4

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

dispatch_async(dispatch_get_main_queue(), ^{
    [myTextField setStringValue:@"a new string"];
});
于 2012-06-07T22:55:46.560 回答
1

您可以使用几种方法:

  • 在主线程上使用重复的 NSTimer 从算法中获取值,然后显示它们
  • 正如 Ken Thomases 所写,使用算法中的 dispatch_async
  • 使用算法中的 performSelectorOnMainThread
  • 让算法将通知发布到 NSNotificationCenter
于 2012-06-08T08:42:18.450 回答