2012-07-21 10 views
5

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.htmlIOSのモデルレイヤ通知コントローラオブジェクト

、Iは、モデル層のViewControllerと通信する方法に関しては以下を参照。

"モデルオブジェクトが変更されると(たとえば、新しいデータがネットワーク接続を通じて受信される)、コントローラオブジェクトに通知され、コントローラオブジェクトが適切なビューオブジェクトを更新します。

私の質問は、モデルオブジェクトがControllerオブジェクトにどのように通知するのですか?これは何ができるのですか?私のモデルレイヤーはユーザーの場所を取得し、Webサービスを呼び出します。データがダウンロードされたときにコントローラオブジェクトにどのように通知する必要がありますか?

おかげで、あなたの特定のケースに応じて、これを行うには、いくつかの方法があります

答えて

4

。一般に、プロトコル/デリゲートの実装、キー値の監視、または通知を使用します。かなり良い概観hereがあります。

編集:私が述べたこの回答へのコメントとして、追加する必要があり

思想:コールバック・ブロックを使用すると、ニーズに応じて、また非常に強固なオプションです。どのようなソリューションがどのような場合に最適であるかについて、多くの可能な決定要因がありますが、ここでは私が従う一般的な概要があります。

一度に1人のオブザーバーしか必要でないことが保証されている場合は、一般にブロックまたはデリゲートを使用します。私の個人的な好みは、1つまたは2つのコールバックがある場合はブロックを使用するということです。なぜなら、これが輝く場所だからですが、可能なメソッドが複数ある場合は代理プロトコルを使用します。

複数のオブザーバーが必要な場合は、NSNotificationCenterで通知します。

イベントの代わりにインスタンス上の特定のプロパティを観察する必要がある場合にのみ、Key-Value-Observingを使用します。

+3

ブロックを忘れないでください;) – Ecarrion