3

作業中のアプリがあり、相互に依存する多数のデータがあります。基本的に、他の数値フィールドを計算するために使用される数値フィールドのセットがあり、それらは他のフィールドを計算するために使用されます。潜在的に多数の変更を処理する最善の方法を決定しようとしています。

私が考えた解決策の 1 つは、ユーザーが変更できる値のセッターをオーバーライドして計算を実行し、データ オブジェクト内の他の値を適切に更新することです。これの最大の欠点は、記述する必要がある (やや定型的な) コードの膨大な量です。

私が考えた別の解決策は、Key-Value Observing を使用してデータの変更を処理し、それらの変更から依存値を更新することです。独立した値が更新される場合を除き、依存する値は更新されないことに注意してください。これはもう少しエレガントだと思いますが、潜在的なパフォーマンスの問題、またはおそらく考慮していない問題について懸念しています。

私が見逃している第3の方法はありますか?この種の作業のベスト プラクティスはありますか? ある種のボイラープレート コードを大量に書かなければならない可能性が高いことはわかっています。このコードは、保守が最も簡単で、可能な限り最小限のコードにしたいと考えています。

4

1 に答える 1

1

非常に多くのフィールドまたは非常に頻繁な更新がない限り、KVO にパフォーマンスの問題はありませんが、その API は最高ではありません。欠点の 1 つは、すべての通知が 1 つの方法で処理されることです。これは、フィールドの数とタイプによっては問題になる場合とそうでない場合があります。

通知も良いオプションかもしれません。各フィールドには、変更を投稿する通知名を付けることができ、他のフィールドは、ソース フィールドへの明示的なポインターなしで観察できます。

また、プロトコルを使用した委任もあります。これは、よりシンプルでパフォーマンスが高い一方で、やり方によってはかなり定型的なものになる可能性があります。

于 2011-05-24T23:20:27.363 に答える