iPhone SDK what is the difference between loadView and viewDidLoad?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Overview of iPhone SDK
The iPhone Software Development Kit (SDK) is a collection of tools, frameworks, and documentation provided by Apple that allows developers to build applications for iOS devices. It includes essential components like Xcode, Interface Builder, and various libraries to leverage hardware features of iOS devices. For developers, understanding the lifecycle of a view controller and its associated methods is crucial to ensure efficient and functional app design.
Understanding the View Controller Lifecycle
Within the iPhone SDK, view controllers are fundamental to managing the views in an application. A view controller is a custom object subclassed from the UIViewController
class, responsible for managing the UI elements and the interactions between the application and the user.
During the lifecycle of a view controller, several methods are called to manage the creation, display, and destruction of views. Two such methods, loadView
and viewDidLoad
, play vital roles but serve distinct purposes and timing.
The loadView
Method
Purpose
loadView
is responsible for creating a view controller's view hierarchy programmatically when that view is not loaded from a storyboard or a xib (nib) file. Typically, developers override this method when they need more control over the creation of their view or when the view hierarchy needs to be entirely set up programmatically.
Characteristics
- Do not call super: When you override
loadView, you should not call the super implementation becauseUIViewControllerdoes not provide its own implementation. - Explicit view creation: You are responsible for assigning a view object to the view controller's
viewproperty, otherwise, the app will crash.
Code Example
Here's a simple example:
- Always call super: You should always call the super implementation first when overriding
viewDidLoad. This ensures that any setup done by the superclass is executed. - UI setup: It is a good place to configure static content, set initial states, and perform one-time setup tasks.

