viewDidLoad in iOS 6 called once?

ios, ios6, uikit, viewdidload

Solution

As of iOS 6, your `UIViewController` subclass will only receive `viewDidLoad` once, unless you write code to set its `view` back to `nil`.

However, I wouldn't rely on that behavior in a complex system-provided view controller like `UIImagePickerController`. Perhaps it sets its own `view` back to nil.

Problem

Head's up: This question is related to the recent deprecation of `viewDidUnload`. I have seen "great" and logical answers around this topic, but apparently they were proven wrong. Proceed with caution, this topic is very confusing as you see. From Apple's Docs: However, the system automatically releases these expensive resources when the view is not attached to a window. The remaining memory used by most views is small enough that it is not worth it for the system to automatically purge and recreate the view hierarchy. So... Can I safely assume in iOS 6 that, as long as I don't explicitly set the viewController's view to nil (unload it manually), `viewDidLoad` will only be called only once for any allocated viewController instance throughout the lifetime of the application?

Original source

Related problems