iPhone - dealloc - Release vs. nil
dealloc, iphone, memory, memory-management, release-management
Solution
What you have seen is probably these:
1) [foo release];
2) self.bar = nil;
3) baz = nil;
Is releasing the object, accessing it through the instance variable `foo`. The instance variable will become a dangling pointer. This is the preferred method in dealloc.
Is assigning `nil` to a property `bar` on self, that will in practice release whatever the property is currently retaining. Do this if you have a custom setter for the property, that is supposed to cleanup more than just the instance variable backing the property.
Will overwrite the pointer `baz` referencing the object with nil, but not release the object. The result is a memory leak. Never do this.
Problem
Wondering if someone with experience could possibly explain this a bit more. I have seen examples of... ``` [view release]; view = nil; ``` ....inside the (void) dealloc. What is the difference and is one better then the other? What is the best way? When doing retainCount testing I have personally seen nil drop a count from 3 to 0 for me, but release only drops it from 3 to 2.