2012-07-21 3 views
5

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.htmliOS Modell Schicht anmelde Controller-Objekt

Bei dem obigen Link, sehe ich die folgend in Bezug darauf, wie die Modellschicht mit dem Viewcontroller kommunizieren soll.

"Wenn sich ein Modellobjekt ändert (beispielsweise werden neue Daten über eine Netzwerkverbindung empfangen), wird ein Controller-Objekt benachrichtigt, das die entsprechenden Ansichtsobjekte aktualisiert."

Meine Frage ist, wie benachrichtigt das Modellobjekt das Controller-Objekt? Was sind verschiedene Möglichkeiten dies zu tun? Meine Modellschicht ruft den Standort des Benutzers ab und ruft dann einen Webdienst auf. Wie soll ich das Controller-Objekt benachrichtigen, wenn diese Daten heruntergeladen werden?

Dank

Antwort

4

Es gibt mehrere Möglichkeiten, dies zu tun, auf Ihrem speziellen Fall abhängig. Im Allgemeinen würden Sie eine Protokoll-/Delegat-Implementierung, Schlüsselwertbeobachtung oder Benachrichtigungen verwenden. Es gibt einen ziemlich guten Überblick here.

Edit:

dachte, ich sollte als Kommentar zu dieser Antwort hinzufügen erwähnt: mit Blöcken Rückruf auch eine sehr solide Option, je nach Ihren Bedürfnissen. Es gibt viele mögliche Entscheidungsfaktoren, welche Lösungen für welche Fälle am besten sind, aber hier folgt eine allgemeine Übersicht, der ich folge.

Wenn Sie garantiert immer nur einen Beobachter benötigen: Ich benutze generell Blöcke oder Delegaten. Meine persönliche Präferenz ist, dass ich Blöcke verwende, wenn es nur ein oder zwei Callbacks gibt, weil sie dort leuchten, aber ich benutze Delegate Protokolle, wenn es mehr als ein paar mögliche Methoden gibt. Wenn Sie mehrere Beobachter benötigen, verwende ich Benachrichtigungen über NSNotificationCenter.

Ich verwende Schlüssel-Wert-Beobachtung, wenn ich nur bestimmte Eigenschaften einer Instanz anstelle von Ereignissen beobachten muss.

+3

Blöcke nicht vergessen;) – Ecarrion

Verwandte Themen