UITableViewCellごとに次のタスクがあるとします
- サービスからデータを取得
- サービスから画像を取得
- コンテナのサイズに合わせて画像のサイズを変更します(取得した画像が大きい場合は、これを行う必要があります)
- あなたのデータを表示します。
バックグラウンドで 1 、 2 、 3 を実行する必要があります
しかし、メインスレッドで 4 を実行する必要があり、実行する必要があります。
すべてのテーブルビューセルごとに個別のスレッドを作成してから、タスク 1 、 2 、 3 に対して再度 3 を作成しないでください。実際にリソースを浪費しています。
それでは、すべてのことについてスレッドを作成せずに、これらすべてのバックグラウンドをどのように行うことができるでしょうか。
グランドセントラルディスパッチ(GCD)を利用する
GCDで読んでください。
迅速な回避策が必要な場合は、ここにあります
Well. Task Number 4 has two things to do.
4(a) Update Some text on table cell for Date we get.
4(b) Display Fetched and Resized Image.
I'm Taking
1 and 4(a)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
1. DO 1 Here
2. Call a Call Back When your Task is Done
example
CallBack(Response);
});
CallBack(Response *)response{
dispatch_async(dispatch_get_main_queue(), ^{
Do your 4(a) Here
});
}