viewDidLoad in iOS 6 called once?

2019-02-16 17:12发布

问题:

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?

回答1:

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.