super init returns retained memory. If I don't pass that memory back to the caller then it would be leaked. In an error condition I don't want to return a partially init'd object so I return nil instead and release the memory returned by super.