我正在为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