gpt4 book ai didi

objective-c - 当我使用dispatch_async时,NSCollectionView UI没有更新

转载 作者:行者123 更新时间:2023-12-03 17:56:31 24 4
gpt4 key购买 nike

所以我有一个包含歌曲列表的 NSCollectionView。当我更新 NSCollectionView 通常表示的数组时,UI 会反射(reflect)该更改:

图片:http://cl.ly/image/1D3A1o192k3W

代码:

[self setCurrentPlaylist:[HMRequest playlistPopular3Day]];

(注:_currentPlaylist 是数组,[HMRequest playlistPopular3Day] 返回歌曲数组)

但是当我尝试使用 dispatch_async 时,用户界面突然变得疯狂。 NSCollectionView 的可见部分不会更新,但是当我向下滚动时,之前隐藏的部分会正确更新。

图片(我滚动了一下,空白的白色是之前可见的,歌曲是 ScrollView 中隐藏的部分):http://cl.ly/image/3y0f212Y3W3S

代码:

dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(aQueue, ^{
[self setCurrentPlaylist:[HMRequest playlistPopular3Day]];
});

有什么帮助可以避免出现空白的 UI 部分吗?

最佳答案

AppKit 的大部分部分都不是线程安全的,因此您应该只在主线程上而不是在后台线程上进行 UI 更新。此外,屏幕截图看起来您实际上不想使用 NSCollectionView ,而是使用 NSTableView ,它在性能方面要快得多。

关于objective-c - 当我使用dispatch_async时,NSCollectionView UI没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com