サーバーからデータをロードし、応答を非同期的に処理しています。NSURLConnection を使用します。デリゲート connection:didReceiveData: への各呼び出しは、そのチャンクを処理しています。
しかし、大量のデータを受信する直前に、テキスト ビューに新しい行にスクロールするように要求しました。つまり、[textView scrollRangeToVisible:] です。
問題は、多くの場合、すべてのデータが受信されるまで textView がスクロールしないことです。これにはしばらく時間がかかり、UI がハングしたように見えることがあります。
これを回避するために、メイン スレッドがデータの処理でロックされていると考えていたので、小さなチャンクに分割する必要があります。
そこで、connection:didReceiveData で受信したデータを分割して小さな操作を実行するコードに変更し、次を使用してそれらをキューに入れました。
[self performSelectorOnMainThread:withObject:smallerChunk waitUntilDone:FALSE]
考えられるのは、実行ループに一連のイベントを配置し、可能な限り scrollRangeToVisible を処理するということです。
ただし、これは機能しません。少なくとも確実ではありません。私は何が欠けていますか?