http://www.whentouseretaincount.com
Messaging a deallocated object is undefined behavior. It might crash, it might work, it might do something completely unexpected.
Upon deallocation, your program won't waste any cycles mucking with the freshly deallocated memory (unless you turn on malloc scribble), thus the undefined part of the behavior.
Nor will your program waste any cycles decrementing the retain count to 0; the object is going to be deallocated anyway, why bother?