親にメッセージを送信する必要があるクラスがあります。このクラスは、アプリケーションの他のメンバーによって使用されません。メッセージをNSNotificationとして送信するか、そのクラスでデリゲートプロトコルを作成し、親にデリゲートメソッドを実装して、メッセージを送信できるようにしますか?
最善のアプローチとその理由は何ですか?ある方法が他の方法よりも優れている点はありますか?
ありがとう
通知は、通知に関心のある複数のオブザーバーまたはオブジェクトがある場合に役立ちます。 これらは、KeyValueObservingにも役立ちます。
デリゲートは、あるオブジェクトからデリゲートターゲットとして指定された別のオブジェクトにメッセージ(宣言したプロトコルに準拠)を送信する場合に非常に便利です。
前述のメッセージング要件を満たすために両方のアプローチを使用できますが、この場合はデリゲート プロトコルの方が適しています。
パターンとしての通知の利点は、投稿された通知に多くのオブジェクトが応答できることです。通知を監視したいオブジェクトは、通知を受け取るために登録するだけです。これの利点は、コードが非常に疎結合であることです (通常、oop では望ましい値です)。この場合の疎結合の欠点は、潜在的に関連する動作が異なるクラス間で発生し、基本的にコード ベース全体で発生するという事実です。
委任パターンはより緊密に結合されており、委任オブジェクトは、メッセージを受信するオブジェクトのプロトコルに準拠する必要があります。このため、通知オブジェクトと通知オブジェクトの間の相互作用 (または意図した相互作用) の性質を観察することは比較的簡単です。コードを見るだけで、2 つの「関連する」オブジェクト間のオブジェクト メッセージングを簡単に把握できます。子供が本質的に何らかの行動を発表している場合 (おそらく親の行動に直接関係している)、委任は優れたアプローチだと思います。