我希望我的 Mac cocoa 应用程序能够持续更新 View ,即使它进入后台?诸如事件监视器或数字色彩计之类的东西。
我怎样才能实现这样的行为?
谢谢!
编辑:我从 NSGraphicContext 获取上下文,然后创建一个线程来在后台完成这项工作。
- (void)drawRect:(NSRect)dirtyRect
{
context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
[NSThread detachNewThreadSelector: @selector(ExecuteDrawingInBackGround:) toTarget: self withObject: nil];
}
最佳答案
您无法从后台线程使用 Mac UI API,因为它不是线程安全的。
连续重新绘制自身的程序通过让后台线程(如果有)通知主线程某些内容已更改并且需要重新绘制来实现此目的。最简单的方法是让后台线程发送 -performSelector:OnMainThreadWithObject:waitUntilDone:某个对象,通常是文档或 View Controller 。
或者,您也可以使用 NSTimer定期触发并完全避免后台线程。
关于cocoa - 持续更新 Mac 应用程序 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608720/