私はかなり複雑なiphoneアプリケーションを持っており、多くの非同期プロセスが発生しています。これに対処するために、私はNSNotificationCenterを多用しています。私の質問は、通知を登録するための「ベストプラクティス」とは何ですか?通知を登録するための「ベストプラクティス」は何ですか?今、それらはハザードの方法で私のコードに散らばっています。 up。メインビューのviewDidLoadに「registerNotifications」メソッドを設定して、すべての通知を1回のショットで明らかに登録することについて考えました。これは合理的に聞こえますか?そうでない場合は、これに対処するための好ましい方法を教えてください。よろしくお願いします。 !!
2 に答える
すべての通知を1つのオブジェクトに入れると、カプセル化が破壊され、それは悪いことです。あるオブジェクトの通知操作を、正しく機能している別のオブジェクトに依存させるようにします。それは実際にはすべてを追跡する悪夢になります。また、分散型のモジュール式メッセージングシステムを作成することである通知の目的全体に逆行します。
通知は「コード全体に散らばる」べきではありませんが、通知を受け取るオブジェクトによってのみ管理される必要があります。大量の通知を使用する場合は、複数の通知を処理するための専用メソッドを使用してクラスを作成し、他のクラスにそのクラスを継承させる必要がある場合があります。そうすれば、自動管理が可能になります。
通知に関して人々が犯す大きな間違いの1つは、データモデルを本当に登録する必要があるときにコントローラーを登録することです。たとえば、URLからデータをダウンロードしていて、進行中や終了時にインターフェースを更新したいとします。UIに複数のビューがあり、コントローラーを登録する場合、すべてのビューで通知を管理する必要があります(複数のビューがある場合があります)。ただし、通知を受信するように共有データモデルを設定する場合は、最大2つの通知。データモデルに移動して、データモデルがそれ自体を更新できるようにします。次に、データモデルがリスニングビューに対して一般的な通知を発行して、データモデルから自分自身を更新できるようにします。
ビューコントローラをデータモデルに依存させると、すべての場合で設計が大幅に簡素化されます。
オブジェクトは、関心のある通知のオブザーバーとして自分自身を登録する必要があります。これを行うのに最適なタイミングは、オブジェクトが関心を持ったときです。それ以外の場合は、通知が不要なときに処理する必要があります。