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 receiveviewDidLoad
once, unless you write code to set itsview
back tonil
.However, I wouldn't rely on that behavior in a complex system-provided view controller like
UIImagePickerController
. Perhaps it sets its ownview
back to nil.