処理の順番が入れ替わる?ために beginEditing と endEditing の呼び出しが釣り合わなくなることがある
スレッドを表示処理中に別のスレッドを表示しようとした際の中断処理がきちんとできていない点に問題があると考えている。-[NSOperationQueue cancelAllOperations] を投げても意味が無い、なぜなら NSInvocationOperation は -cancel をサポートしていないから。
NSInvocationOperation を利用して CMRThreadLayoutTask 系のクラスを NSOperationQueue に乗っけている現在の実装を整理して、直接 NSOperation のサブクラスを作って CMRThreadLayoutTask 系のクラスの代替にする。その上で -cancel に反応できるようにすることを検討中。
スレッドリスト更新系のタスクと、スレッド内容表示系のレイアウトタスクが同じ NSOperationQueue に乗っていると都合が悪い感じになって来たので、キューを分離する方向で考えている。
あと、「中止」コマンドへの反応、CMRTaskManager への登録などができていないのでこれもきちんとできるようにしないといけない。
それから、様々なシチュエーションでの動作確認……道は遠い。
ある程度は出来てきたので、順次、コミットしていきます(一部は既にコミット済み)。
Sneaky v578 でしばらくフィードバックを観察する。
※なお、スクロール時の白抜け問題は別の要因なので、このバグのクローズ判定には考慮しないものとする。
たまたまかもしれないけど…「治りました」というはっきりした報告も無いが、問題発生の報告もなくなったので、いったんクローズします。
10.9 に限らず発生する。なんとか防止する対策を考えた方が良さそう。