私はCocoaプログラミングに不慣れです(ただし、他のUIフレームワークには比較的経験があります)が、次の状況でどこが間違っているのか正確にはわかりません。
NSOutlineViewDataSourceによってラップされたデータの「ツリー」があります。項目は非常に基本的な読み取り/書き込みです(チェックボックスを考えてください)。ただし、
setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
と呼ばれる、私が行った変更は、問題の単一のアイテムに影響を与えるだけでなく、他のアイテムに伝播する可能性があります。つまり、1つのアイテムをチェックすると、ツリー内の他のアイテムが選択または選択解除される可能性があります。データモデルレベルでは、これは正常に機能しています。私の問題は、これらの他の変更がUIに表示されるように、アウトラインを強制的に更新することです。
したがって、基本的に、setObjectValueが呼び出されると、変更された個々のセルが更新されますが、UIで更新するには、(潜在的に)ツリー全体が必要です。
このようなことを行うためのベストプラクティスのメカニズムは何ですか?NSOutlineViewに、更新をトリガーするためにリッスンする必要のあるイベントがありますか。NSOutlineViewDataSourceは、ビューがリッスンするイベントを発生させる必要がありますか?それとも私の基本的なアプローチは完全に間違っていますか?
(私は実際にMonomacでこれを行っていますが、どのような答えもカカオ一般に当てはまると思います)