アプリによくわからない問題があります。ユーザーがお気に入りの曲をオフラインで利用できるようにしたい場合、アプリにダウンロードする曲があります。を使用してダウンロードを開始するとNSURLConnection
(を使用してもcommonRunLoopMode
)、アプリが非常に遅くなり始め、フリーズせずに tableView をスクロールすることさえできません。
データのダウンロードなどの単純なことで、ユーザー エクスペリエンスが低下するのはなぜでしょうか?
アプリによくわからない問題があります。ユーザーがお気に入りの曲をオフラインで利用できるようにしたい場合、アプリにダウンロードする曲があります。を使用してダウンロードを開始するとNSURLConnection
(を使用してもcommonRunLoopMode
)、アプリが非常に遅くなり始め、フリーズせずに tableView をスクロールすることさえできません。
データのダウンロードなどの単純なことで、ユーザー エクスペリエンスが低下するのはなぜでしょうか?
ダウンロード コードがメイン スレッドで実行されているようです。このスレッドは、短いタスクとユーザー インターフェイス操作用にのみ予約する必要があります。これは、ユーザー インターフェイスがこのスレッドで実行されているためです。このスレッドで長時間実行されているプロセスは、基本的にユーザー インターフェイスをブロックします。これはかなり長いトピックですが、これを読んでください:
この:
Grand Central Dispatch を使用すると、実行時間の長いプロセスをディスパッチ キューに入れ、バックグラウンド スレッドで非同期に処理することができます。