首页 > 解决方案 > 相当于 Cocoa 中的 wxYield

问题描述

我是 MacOS 编程的新手。我正在使用带有 XIB 接口的 Objective-C 来开发 Mac 应用程序。

我正在制作一个压缩和解压缩文件/文件夹的应用程序。我还实现了一个进度条来显示任务的进度。

但是,当用户放下一个大文件来压缩应用程序时,应用程序冻结,进度窗口永远不会显示,但日志工作正常。

我记得当我使用 wxWidgets 时,在这种情况下,我必须使用它wxYield()来处理事件并更新 ui,一切都会好起来的。

那么,在 Cocoa 上做这件事的方法是什么?

标签: c++objective-cmacoscocoawxwidgets

解决方案


我使用@Willeke 的建议进行了工作。

我正在zip_close另一个线程上执行该函数,让主线程处理 UI 更新和事件。

此外,当发出进度回调时,我正在通过访问主线程来更新 UI(从另一个线程更改 UI 会发出警告)。

感谢@Igor 和@Willeke 的帮助!


推荐阅读