Actually I really couldn't think of any reason why, with zombie or not, accessing deallocated object can happen at all. If a reference is strong, then object is not deallocated. If reference is weak then it's nilled when object is deallocated.
I suppose it could happen if people use assign pointer. But doing so would be asking for trouble.
However, sometimes my app do crash with this message:
Yet, the app did crash with error: message sent to deallocated instance 0x189f09c0
I have no idea why.
What happen is a UIViewController is pop out of UINavigationController. Then it's viewDidScroll is about to be called.
But that's strange.
I enabled zombie. However, enabling zombie shouldn't have been the case. This answer clearly shows that all weak references are niled even when debugging with zomie
Are all weak references nilled if we enable zombie object?
So what's going on?