2016-05-31 17 views
5

Ich habe ein Problem bei der Implementierung der MVC-Muster in iOS mit Swift. Gemäß der Apple-Dokumentation gibt es ein MVC-Schema:Implementierung des MVC-Pattern

MVC pattern

Ich bin mit, dass in Ordnung, aber wie Sie sehen können, wenn das Modell selbst ändert (eine eingehende Nachricht von einem Socket, für exemple), wie ist sollte es den Controller benachrichtigen?

Zum Beispiel habe ich eine Chat-Anwendung mit einem Modell, das eine Liste von Nachrichten darstellt. Wenn das Modell eine neue Nachricht empfängt, wie benachrichtigt es den Controller? Gibt es einen konventionellen Weg, das zu tun?

Dank

+2

Die zwei häufigsten Arten sind Delegation und Verwendung von NSNotifications – Paulw11

+0

@ Paulw11 Ja, funktioniert perfekt und es ist schön, danke! – Mathieu

+1

Key-Value-Beobachtung (kvo) ist auch ein überzeugender Weg, um dieses Problem zu lösen. NSHipster hat einen älteren, aber immer noch interessanten Artikel zu diesem Thema: http://shipster.com/key-value-observing/ – Andrew2M

Antwort

2

Kommunikation zwischen Schichten ist ein sehr interessantes Thema und garantiert mehr als nur eine Liste von Methoden.

Hier ist a very relevant article from objc.io, die nicht nur eine erschöpfende Liste von Kommunikationsmethoden enthält, sondern auch ihre Stärken und Schwächen analysiert und ein Flussdiagramm vorschlägt, das Ihnen bei der Entscheidung hilft, welche Methode die beste ist.

Making the Right Choice

In Ihrem Fall ist das Modell der Absender und der Controller ist der Empfänger. Normalerweise hält der Controller das Modell, so dass der Controller das Modell kennt, aber das Modell den Controller nicht kennt. Sie befinden sich daher im unteren Teil des Diagramms.

Bitte lesen Sie den vollständigen Artikel. Es hat auch Beispiele aus Apple-Frameworks. Es ist wirklich nützlich.

Verwandte Themen