So with viewDidUnload
deprecated as of iOS 6, what do I need to do now?
Delete it, and migrate all of it's contents in didReceiveMemoryWarning
, or leave it, and don't do anything in didReceiveMemoryWarning
?
The short answer is that, in many cases, you don't need to change anything. And, you most certainly do not want to simply migrate all of the contents of viewDidUnload
to didReceiveMemoryWarning
.
Generally, most of us do the setting of IBOutlet
references to nil
in viewDidUnload
(largely because Interface Builder would put that there for us) and do the general freeing of memory (e.g. clearing of caches, releasing of easily recreated model data, etc.) in didReceiveMemoryWarning
. If that's the way you do it, then you probably don't require any code changes.
According to the iOS 6 viewDidUnload
documentation:
Views are no longer purged under low-memory conditions and so this method is never called.
Therefore, you do not want to move the setting of your IBOutlet
references to nil
anywhere, because the views are no longer purged. It would make no sense to set them to nil
in didReceiveMemoryWarning
or anything like that.
But, if you were responding to low memory events by releasing easily-recreated model objects, emptying caches, etc., in viewDidUnload
, then that stuff should definitely move to didReceiveMemoryWarning
. But then, again, most of us already had it there already.
Finally, if you free anything in didReceiveMemoryWarning
, just make sure your code doesn't rely upon them being recreated in viewDidLoad
again when you pop back, because that will not be called (since the view, itself, was never unloaded).
As applefreak says, it depends upon what you were doing in viewDidUnload
. If you update your question with explicit examples of what you had in your viewDidUnload
, we can probably provide less abstract counsel.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With