I\'ve learned that in dealloc you do [object release]; but in viewDidUnload (in a UIViewController subclass) you do self.object
dealloc
[object release];
viewDidUnload
self.object
If you do object = nil without [object release], that might causes memory leaking. If you do [object release] without object = nil afterwards, object becomes dangling pointer as @Jim suggested. self.object = nil is a sugar for setter function call.
object = nil
[object release]
self.object = nil