首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持续更新NSImageView

持续更新NSImageView
EN

Stack Overflow用户
提问于 2012-08-22 03:37:00
回答 2查看 840关注 0票数 1

我有一个NSImageView,需要重新绘制一个不断更新的图像。我有一个创建NSImage的模型对象,以及一个将此图像链接到NSImageView的控制器。

使用多线程,我可以很容易地让模型对象在后台线程中连续更新其输出图像。但是由于UI交互应该在主线程上完成,所以我不能在后台线程上设置NSImageView的图像。如果我更新主线程上的NSImageView,程序将变得无响应

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 03:46:45

我不想自相矛盾,但是为什么你认为更新主线程上的图像会使程序没有响应?

如果计算下一个NSImage是瞬间的,那么从逻辑上讲,你应该只计算并显示最后一个,因为介于两者之间的任何一个都不会被感知到。

如果计算下一个需要花费一些时间,那么在主线程上执行计算,然后将图像推送到主线程上的视图中(例如,使用performSelectorOnMainThread:...)。主线程不会变得无响应,因为在您计算下一个图像以处理其他事件时,它有足够的时间。

如果更新比显示的帧速率更频繁,那么你可以通过设置一个CVDisplayLink并轮询正在更新图像的任何内容来获得最新的图像,从而获得最新的图像。

票数 1
EN

Stack Overflow用户

发布于 2012-08-22 14:57:58

不要在后台线程上更新NSimageView。它不是thread safe。您应该使用performSelectorOnMainThread:withObject:waitUntilDone:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12061832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档