こんにちは。むらいです
scrollviewやtableviewでは画像を表示させることが多いので、そのときのサンプルコードを。
非同期処理をしないと画像を読み込み完了し終えるまで、他の処理が止まってしまい固まります。
これはユーザにとって非常にストレスなので、だいたいのアプリは画像を非同期で取得しているかと思います。
昔はすごく非同期処理が難しかった覚えがありますが、
いつからかものすごく簡単になっています。
コードは以下です。
dispatch_queue_t q_global = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_queue_t q_main = dispatch_get_main_queue(); dispatch_async(q_global, ^{ //URLなどから取得した画像をuiimageにセット dispatch_async(q_main, ^{ //uiimageのサイズ調整を行い、addsubviewなどを行って表示させる }); });
これだけです。
これはgrand central dispatch(GCD)と呼ばれるもので、
もちろん並列処理を行うためのものなので、画像読み込み以外で非同期処理を行いたいときにも使えます。
参考にどうぞ。