我的 Mac 应用程序中有一个 NSCollectionView,它包含一些图标。同时,我使用 NSOperationQueue 作为任务调度程序来排队一些操作。在一个 NSOperation 中,我修改了 NSCollectionView 的内容,当内容更改时,视图应该立即更新。
如果我在主线程中更新它,那么它工作得很好。如果我将相同的源代码放在 NSOperation::main() 的末尾,那么 NSCollectionView 将完全空白。
这是某种错误还是我做错了?
谢谢!
我的 Mac 应用程序中有一个 NSCollectionView,它包含一些图标。同时,我使用 NSOperationQueue 作为任务调度程序来排队一些操作。在一个 NSOperation 中,我修改了 NSCollectionView 的内容,当内容更改时,视图应该立即更新。
如果我在主线程中更新它,那么它工作得很好。如果我将相同的源代码放在 NSOperation::main() 的末尾,那么 NSCollectionView 将完全空白。
这是某种错误还是我做错了?
谢谢!
所有与 UI 元素的交互都必须在主线程上执行。
您可以使用该performSelectorOnMainThread:withObject:waitUntilDone:
方法帮助您从后台线程更新 UI 元素。