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 propertybar
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.