If you don't release self here it is a memory leak. [super init] retains the memory, the subclass detects an error condition and releases the memory and returns nil.