View controller objects takes care of the presentation of app's content on the screen. A view controller is used to manage a single view along with the collection of subviews. It makes its views visible by installing them in the app's window.
The app delegate object is created by UIApplicationMain function at app launch time. The app delegate object's main job is to handle state transitions within the app.
To change the content of your app, you use a view controller to change the views displayed in the corresponding window. Remember, window itself is never replaced.
Document objects are not required but are very useful in grouping data that belongs in a single file or file package.
Data model objects are app specific objects and store app's content. Apps can also use document objects to manage some or all of their data model objects.
In such case the event will be dispatched to your app delegate for processing.
App delegate is declared as a subclass of UIResponder by Xcode project templates.
Controller object UIApplication is used without subclassing to manage the application event loop. It coordinates other high-level app behaviors.
It works along with the app delegate object which contains app-level logic.
In case system is running low on memory, the system may purge suspended apps without notice.
An app is said to be in suspended state when it is still in memory but is not executing any code.