Thus, in each view there are several owners. When this owner counter (commonly called saveCount) reaches 0, this object is destroyed.
In iOS 5, we now have weak links, which essentially mean "don't own this object."
Before iOS 5, you will see in our header files
IBOutlet UILabel *myLabel;
And this shortcut has been added to the XIB file view. In this case, myLabel has 2 owners: it is a supervisor (view in the XIB file) and a view controller (using IBOutlet). When viewDidUnload is called, the view controller view was released, and therefore its ownership of myLabel disappeared. So, myLabel at the moment has only 1 owner, a view controller. Therefore, we needed to release it in viewDidLoad to make sure that it had no owners, and therefore it was destroyed.
In iOS 5, you'll often see this instead
__weak IBOutlet UILabel *myLabel
This suggests that we do not want the view controller to own myLabel. Thus, the sole owner is the view controller view. Therefore, when viewDidUnload is called, the view controller view is already released, and therefore its ownership of myLabel has also been released. In this case, myLabel now has no owners, and its memory is freed. No need for self.myLabel = nil; there is.
So, with iOS 5, it is recommended to make all your IBOutlets a weak link. In this case, you do not even need to implement viewDidUnload, since all the memory took care of you.
But even if you use iOS 5, if your IBOutlets are not weak links, you will need this code in viewDidUnload.