Apple describes the architectural pattern used by iPhone apps as MVC. However, virtually no modern application uses MVC (as described by Trygve Reenskaug). Modern operating systems, including iPhone OS, inherently handle controller responsibilities. What is mistakenly and commonly referred to as MVC is actually MVP.
Why does Apple say MVC and not MVP?
This is certainly a good question – and it’s one I’m not sure I know the answer to. I think Apple uses the term MVC almost universally because many of the views in Cocoa/AppKit use data bindings to draw data directly from the model and this breaks with the MVP pattern. In the diagram below (from This article), the MVP model shows all the data moving through the presenter – and this generally isn’t the case for well-built Cocoa apps.
In most Cocoa apps, data bindings and key-value observation are used to bind the view and model together without requiring the interaction of the controller to update them. Also, in Cocoa apps there is a primary controller which determines when and where views are loaded. To borrow from glenn_block’s response to this question:
(source: vuscode.com)
Hope that helps! It could be a totally random decision on Apple’s part – but I think their choice is reasonable.