0

アプリによくわからない問題があります。ユーザーがお気に入りの曲をオフラインで利用できるようにしたい場合、アプリにダウンロードする曲があります。を使用してダウンロードを開始するとNSURLConnection(を使用してもcommonRunLoopMode)、アプリが非常に遅くなり始め、フリーズせずに tableView をスクロールすることさえできません。

データのダウンロードなどの単純なことで、ユーザー エクスペリエンスが低下するのはなぜでしょうか?

4

1 に答える 1

0

ダウンロード コードがメイン スレッドで実行されているようです。このスレッドは、短いタスクとユーザー インターフェイス操作用にのみ予約する必要があります。これは、ユーザー インターフェイスがこのスレッドで実行されているためです。このスレッドで長時間実行されているプロセスは、基本的にユーザー インターフェイスをブロックします。これはかなり長いトピックですが、これを読んでください:

http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091

この:

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

Grand Central Dispatch を使用すると、実行時間の長いプロセスをディスパッチ キューに入れ、バックグラウンド スレッドで非同期に処理することができます。

于 2013-07-26T15:55:01.390 に答える