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.
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?
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.