Was sind die Unterschiede MVC/SwiftUI

MVC bzw. Cocoa ist das alte Paradigma, das seit MacOS X 1.0, ja sogar seit NextStep genutzt wird. MVC steht für Model - View - Controller. Der Vorteil dieses Paradigmas ist, daß das Model für sich allein stehen kann, egal ob es eine Datenbank ist, ein Backend-Server, oder eine einzelne Datei. Das Model wird über einen Controller (in macOS/iOS meist ein ViewController) an die View, das heißt die eigentliche Benutzeroberfläche, angebunden. Das ganze hat viele Vorteile: Gerade durch Cocoa wurde dem Programmierer viele Elemente kostenlos zur Verfügung gestellt, zum Beispiel Rechtschreibprüfung in allen Texteingabefeldern. Andererseits musste man an einigen Stellen sehr viel Overhead in Kauf nehmen. Ein Beispiel ist das TableView, das zwar viele Möglichkeiten bietet, aber einiges an Delegate-Funktionen benötigt. 

MVC ermöglicht eine sehr modulare Programmierung, direkte und sehr große Kontrolle über fast alle Elemente seines Programmes.

SwiftUI nutzt einen View-Zentrierten Ansatz. Um viele Elemente, beispielsweise Fenstergröße und -Vergrößerung oder auch Größe des Bildschirmes (iPhone, iPad oder gar ein 32"Bildschirm beim Mac) muss sich der Programmierer nicht mehr kümmern. Listen und Tabellensichten sind einfach definiert und können flexibel erweitert werden. 

Wo Licht ist, ist auch Schatten: Dadurch das Code und Definition des Views gemischt werden, blickt man je nach Komplexität, nicht mehr durch den Code. 

Allerdings ist es natürlich möglich nach Belieben selbstdefinierte Views in eigene Dateien auszulagern. Auch kann man natürlich eigene Model-Dateien definieren, und die Daten dann entsprechend auszulagern. Alles im Swift-Code. 

Allerdings hat man auch weniger Kontrolle über die Elemente der Oberfläche, beispielsweise Fenster und Menüs. 

Beide Ansätze haben ihre Berechtigung, der MVC-Ansatz für Applikationen, bei denen das Model im Mittelpunkt steht, und weniger die Benutzeroberfläche, der SwiftUI-Ansatz, wenn es darum geht eine attraktive und benutzerfreundliche UI zu erschaffen, und schnell zu Ergebnissen zu kommen.  

Und natürlich können beide Ansätze beliebig gemischt werden. Ein klassisches MVC-Programm kann beliebig mit einem SwiftUI-View "aufgepeppt" werden, auch ein SwiftUI-View kann eine normale Swift-View enthalten.