1

を提供していNSOutlineViewDataSourceます。テーブルのデータはデータベースから取得されます。少量の処理が行われていますが、それほど多くはありません。

outlineView: objectValueForTableColumn: byItem:データは頻繁に変更される可能性があるため、返されるオブジェクトに格納するのではなく、呼び出しで値を計算していますoutlineView: child: ofItem:

最初の調査から、NSOutlineViewはあまり冗長なコールバックを実行していません (つまり、同じ行を 2 回要求しました)。私はテーブル モデルがどのように機能するかを理解しており、データセットが特定のサイズに達したときにこれを少し行うことを期待しています。

冗長な呼び出しが多数発生することを期待する必要がありますか (その場合は、データをキャッシュしてみてください)、それとも適切な量のキャッシュを実行しますか? セルが画面外に出てから戻るたびに呼び出しを行いますか?

objectValueForTableColumnキャッシュするか再計算するかの決定は、特定のセルに対して が呼び出されると予想される頻度とのバランスです。どちらに進むべきかについてコンセンサスはありますか? それとも、特定のデータセットに対する試行錯誤ですか?

4

1 に答える 1

0

これは良い質問であり、私が現在コーディングしている領域と一致します。私自身のテーブルビューはsqlite3データベースからデータを読み取るため、データをキャッシュすることを選択しました(私の行数は100万から数百万の範囲です)。

キャッシュされたオブジェクトには、最後にアクセスされた時間の値も含まれているため、キャッシュが大きくなりすぎたときにキャッシュをクリーンアップできます。

私が直面している最大の問題の1つはSELECT、ユーザーの検索/並べ替えの要件に基づいてデータを処理する必要がありNSTableViewDataSource、現在使用可能な行に関する情報が提供されないという事実です。情報を追加するには、その吸盤をサブクラス化する必要があると思います。

于 2012-12-04T10:00:42.017 に答える