0

だから私は曲のリストを持つ NSCollectionView を持っています。NSCollectionView が通常表す配列を更新すると、UI にその変更が反映されます。

写真: http://cl.ly/image/1D3A1o192k3W

コード:

[self setCurrentPlaylist:[HMRequest playlistPopular3Day]];

(注: _currentPlaylist は[HMRequest playlistPopular3Day]配列で、曲の配列を返します)

しかし、いきなり使おうとするとdispatch_asyncUIがおかしくなってしまいます。NSCollectionView の表示部分は更新されませんが、下にスクロールすると、以前は非表示になっていた部分が正しく更新されます。

写真 (少しスクロールしました。空白の白は以前に表示されていたもので、曲は非表示のスクロール ビューの一部です): 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 セクションを回避する助けはありますか?

4

1 に答える 1

1

AppKit のほとんどの部分はスレッドセーフではないため、バックグラウンド スレッドではなく、メイン スレッドでのみ UI の更新を行う必要があります。NSCollectionViewさらに、スクリーンショットは、実際には を使用するのではなく、を使用したいように見えますNSTableView。これは、パフォーマンスの点ではるかに高速です。

于 2012-09-18T23:33:14.577 に答える