let queue = OperationQueue()queue.addOperation() { doTheBackgroundStuff()}
启动后台 *** 作,进行大量计算.在AppDelegate我有
@IBOutlet weak var image: NSImageVIEw! // some image to show@IBOutlet weak var number: NSTextFIEld! // a corresponding number@IBOutlet weak var mainVIEw: NSVIEw! // the main vIEw holding the above
分配
number.intValue = Int32(someNumber)
是经常(经常)从后台运作发出的.但文本永远不会改变.我在IB中为视图和TextFIEld设置了“可以同时绘制”.我也试过了
if mainVIEw.lockFocusIfCanDraw() { mainVIEw.setNeedsdisplay(mainVIEw.rectPreservedDuringliveResize) mainVIEw.unlockFocus()}
在文本字段分配之后.也无济于事.
解决方法 通常,如果您将视图更新代码从后台任务中发送回主队列,这些问题就会消失:dispatchQueue.main.async { // your vIEw update code}
如果你的doTheBackgroundStuff中没有太多的地方,你可以把它们放在视图更新中,即每当你访问你的mainVIEw时.
否则,有助于将事物重新分组为非UI繁重的部分,然后在最后将视图更新推送到dispatch.main.async.
总结以上是内存溢出为你收集整理的swift – 从后台 *** 作中绘制NSView无效全部内容,希望文章能够帮你解决swift – 从后台 *** 作中绘制NSView无效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)