So I had a project that supported iOS 4, so all my IBOutlets were __unsafe_unretained
even IBOutlets that were in the nib but outside the controllers main view
For future searchers who come across this question, I think CRD's Stackoverflow answer to a similar question may explain. Even though the object has been deallocated, the memory that's referenced by the unsafe unretained pointer (which contains the actual object data) is not necessarily zeroed, so things may appear to behave properly until that memory is actually reused/modified/zeroed.