私はMacプログラミングには新しく、ドキュメントベースのアプリケーションで作業しています。文書ベースのCocoaアプリケーションでの結合を回避するには?
私のNSDocument
サブクラスはNSWindowController
サブクラスを作成します。このウィンドウコントローラは、サブクラスとしても2つのNSViewControllerサブクラスを作成します。
時々、NSViewController
のビューの1つを変更すると、NSDocument
および/またはメインモデルクラスに通知する必要があります。また、モデルの変更は、すべての/一部のビューに通知する必要があります。
私の質問は、カップリングがない(または最小限の)カップリングがないのは何ですか?私はいくつかの選択肢があるけど、私は、私は、プログラミングではなくNSDocument
ココアにし、特に初心者じゃないと自分のアプリケーションのための最高のスーツたかわからないんだけど:
KVO。いいえ、実装が簡単ですが、私は明示的にオブザーバに変更(AFAIK、
self.someProperty = newValue
は自動的にオブザーバに通知する)を通知しないという考え方は嫌いです。登録しなければならないという事実は気に入らない時間が経つにつれて変化する可能性のあるプロパティ名に変換します。通知。私は彼らが何であるかを知っていて、私はそれらをiOSのために使いました。しかし、私はどこかで、彼らがただちにオブザーバーに送られることは保証されていないと読んだ。本当ですか?そうでない場合は、ドキュメントベースのアプリの優れたアプローチと見なしますか?
代表者。はい、通常の状況(または私が通常見たことがある)では、クラスには1つのデリゲートがあります。しかし、デリゲートの配列を作成するだけでも動作します(テスト済みです)。私がここで見る問題は、デリゲートに通知する必要があるたびに、ループを繰り返す必要があり、メソッドに応答することを確認し、そのメソッドを呼び出すことです。
他にも選択肢がありますか?
通知*はただちにオブザーバーに送付されます。 –