Am I managing my memory correctly?
It's not init that causes you to have to be responsible for releasing the memory its alloc. If you call alloc, retain or new (this is rarely used these days) then you are responsible for releasing the memory yourself.

So in the case where you had an autoreleased object and you retained it. Then yes you would then be responsible for subsequently releasing it.

The most common side affect where you can be responsible for releasing an object you didn't explicitly call alloc or retain on is with a property that has the retain attribute.

@property (retain) NSString *string;

if you then have the following code somewhere

self.string = [NSString stringWithString:@"This is an autoreleased string typically"];


calling the self.string piece will cause it to retain the value you are setting it with. So you would want to make sure and have the following to clean it up, probably in your dealloc.

self.string = nil;