我是 MacOS 编程新手。我正在使用 Objective-C 和 XIB 接口来开发 Mac 应用程序。
我正在制作一个用于压缩和解压缩文件/文件夹的应用程序。我还实现了一个进度条来显示任务的进度。
但是,当用户删除一个大文件来压缩应用程序冻结时,进度窗口永远不会显示,但日志工作正常。
我记得当我使用 wxWidgets 时,在这种情况下我必须使用
wxYield()
来处理事件并更新 ui,一切都会好起来的。
那么,在 Cocoa 上做这件事的方法是什么?
我使用了@Willeke的建议来完成它。
我正在另一个线程上执行
zip_close
函数,让主线程处理 UI 更新和事件。
此外,当发出进度回调时,我将通过访问主线程来更新 UI(从另一个线程更改 UI 会发出警告)。
感谢@Igor 和@Willeke 的帮助!