Please note, this blog entry is from a previous course. You might want to check out the current one.
Like every year lecture #1 is an general introduction of the course with an overview about iOS, MVC and Object C.
Paul Hegarty stresses the importance of being familiar with object oriented programming as prerequisites for the course and that it is not for absolute beginners.
In the iOS overview he shortly explains the different layers of iOS. Beginning with
- the core OS which includes the kernel, the file system, power management, security, C-API, …
- the core services which provide the basic functionality of core location, SQLite, file access, threading, …
- the media layer with core audio, OpenGL, ES, Quartz, …
- the cocoa touch layer providing multi touch, map kit, camera handling, controls, core motion, localization, the view hierarchy, …
The Model-View-Controller design pattern provides three objects
- a model: “What the application is”
- a controller: “How the model is presented to the user”
- a view: “Minions of the controller used to present the user interface”
which communicate with each other.
The controller talks directly to the model and the view. The model and the view should never speak to each other directly. They communicate with each other via the controller which acts as interpreter of the given information.
A view communicates with the controller via
- target actions – where the controller drops a target on itself and the view hands out an action to that target when things happen in the user interface,
- delegates – “action sending” is delegated from the view to the controller using protocols,
- data sources – where the data to be displayed in the view is provided by controller.
The model communicates with the controller using a notification mechanism where the model broadcasts and the controller “tunes in” and reacts accordingly.
Multiple MVCs communicate via their controllers.
The lecture as well as its slides are available via iTunes under the name “1. Class Logistics, Overview of iOS, MVC, Objective-C”.