UITableViewCellの再利用と非同期処理の話。

「UITableViewのスクロールが遅いのは非同期処理を使ってないからである!」という主張に対して「不用意にdispatch_async一発とか危なくない?」というツッコミ。
10
スミヒロは酒飲み🍶 @sumihiro

@nagisawks それはセルに乗っかってるもの次第でわー

2013-12-11 09:53:17
Nagisawks @nagisawks

@sumihiro そんなたいそうなもん乗せんでよかw

2013-12-11 09:59:17

sonson @sonson_twit

@sumihiro @nakiwo NSOperationQueueなんか使わず自前でちゃんとキューを管理すればいいだけじゃね?

2013-12-11 09:58:50
スミヒロは酒飲み🍶 @sumihiro

@sonson_twit @nakiwo ダウンロードだけでなく、画像のリサイズとかも含めてどうすっかなーと。

2013-12-11 09:59:48
sonson @sonson_twit

@sumihiro @nakiwo リサイズ?ダウンロードとセットで別スレッドで回せばいいんじゃね?リサイズはすぐに終わるし,リサイズを別スレッドでまわしてリサイズ中にキャンセルするのはあんまり効率的じゃないと思う

2013-12-11 10:01:09
Yuichi Fujishige @nakiwo

@sumihiro @sonson_twit NSOperationQueueを使うかどうかはともかく、GCD投げっぱなし放置なサンプルコードが気になる、という事では

2013-12-11 10:00:52
sonson @sonson_twit

@nakiwo @sumihiro そうですね GDC投げっぱなしは後で悲惨な結果を生みますね

2013-12-11 10:01:38
sonson @sonson_twit

@nakiwo @sumihiro GDCの使い方は間違ってるとは言えないけど,簡単にキャンセルできない処理を突っ込んでるのはそれを理解してないと後々,不都合が出るでしょうね・・・・

2013-12-11 10:03:23
Tomohisa Takaoka @tomohisa

@sumihiro @nakiwo @sonson_twit 僕はGCD使いますけど、読み込みを開始したindexPathと終了して表示する時のindexPathを比較して同じ時だけimageを更新しますね。

2013-12-11 10:09:00
スミヒロは酒飲み🍶 @sumihiro

@tomohisa @nakiwo @sonson_twit 正しい対象に画像をセットするのはそれでもいいとは思うのですが、非同期処理のキューが溜まっていく問題はそれでは解決できないですよね。

2013-12-11 10:10:12
sonson @sonson_twit

@sumihiro @tomohisa @nakiwo ダウンローダの実装をスレッドをロックしないものにして,キャンセルできるようにしておき,コールバック先のセルが再利用のタイミングでダウンロードスレッドをキャンセルするというのがいいんじゃない?というそれしかないと思う

2013-12-11 10:12:42
スミヒロは酒飲み🍶 @sumihiro

@sonson_twit @tomohisa @nakiwo そうそう、解としてはそれがベストなんやろうなーと。ダウンロードするにせよ、画像をリサイズするにせよ。ともかく、なんでもdipatch_async一発で済ませるのは危ないよなーという話。

2013-12-11 10:14:08

Yuichi Fujishige @nakiwo

GCDに付いて検索するときは、GCD|GDCで検索する必要が有るという気づき

2013-12-11 10:02:13
Yuichi Fujishige @nakiwo

"Game Developers Conference"(GDC)でGCDの話はありそうだから困る

2013-12-11 10:04:06

GCDの勉強をするならこの一冊。

リンク 達人出版会 エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド iOSとOS Xの新機能「ARC」「Blocks」「Grand Central Dispatch」の解説本。Appleのリファレンスの和訳や解説にとどまらず、その実装を元に深く理解するための一冊。

Yuichi Fujishige @nakiwo

再利用されるプログラマになりたい

2013-12-11 09:51:44