Here's my understanding of it:
Object are only retained (reference counter is incremented):
- when
init
fromNSObject
is called. - when
retain
is called.
Objects are only released (reference counter is decremented):
- when
release
is called. - when an autorelease pool containing the object is drained
And to clarify, autorelease does not retain, but just places the object into the top most pool on the autorelease pool stack.