2011-06-28 16 views
2

したがって、最初のビューではviewDidLoadにモンスターコードがあります。さて、私はそれがこのGCDを使用して表示の読み込みを高速化する

OwnObject *o1 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]]; 
OwnObject *o2 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]]; 

のように...

のように見えるので、私はリンゴの開発者で、再びセッションのビデオを見ていたし、彼らは私が使用するべきであると言った、私自身のオブジェクトの7を割り当てていますGCDを高速化するためには、私はそれをディスパッチキューに入れてアプリのスピードを上げることができますか?

私のビューの読み込みは非常に遅いわけではありませんが、私は通常、そのようなものをディスパッチキューに入れるべきかと思っています。

ありがとう、申し訳ありませんが、これはばかです。

+0

イメージが同期して読み込まれるほど高速であれば、なぜバックグラウンドでそれをやっているのですか? –

+0

私はバックグラウンドで一般的にそのようなことをしなければならないと思っていましたか? –

+0

私は通常、GCDを使用してバックグラウンドでネットワーク操作を実行します。ここに表示されているオブジェクトの作成は、通常、メインスレッドで行うには軽くて済みます。 –

答えて

4

これらの割り当てがメインスレッドを必要とするもの(UIに触れるなど)を行わない場合、それらの割り当てはキュー内のGCDを介して実行できます。あなたはdispatch_asyncを使用したいでしょう。なぜなら、同期呼び出しでは、割り当てが完了して何も得られなくなるまで待たなければならないからです。また、非同期ディスパッチコールがよく非同期であるため、View ControllerがviewDidLoadの終了処理を処理するように設計されていることを確認する必要があります。割り当てが完了した通知を投稿するか、ビューコントローラが割り当てが完了したときにそのオブジェクトの使用を開始できるように、dispatch_group_notifyを使用する必要があります。

これらの割り当てに時間がかかる場合を除き、これは価値があるよりも問題が多い可能性があります。

+0

ありがとう!これは本当に役に立ちました。 –

関連する問題