Use autorelease antes de adicionar objetos a uma coleção?

Eu tenho procurado através das perguntas feitas no StackOverflow, mas há tantas sobre o gerenciamento de memória no Objective-C que eu não consegui encontrar a resposta que estava procurando.

A questão é se está tudo bem (e recomendado) chamar autorelease antes de adicionar um objeto recém-criado a uma coleção (como NSMutableArray)? Ou devo liberá-lo explicitamente depois de adicioná-lo. (Eu sei NSMutableArray willl reter o objeto)

Isso ilustra minha pergunta:

Cenário A (autorelease):

- (void) add {
   // array is an instance of NSMutableArray

   MyClass *obj = [[[MyClass alloc] init] autorelease];

   [array addObject:obj];
}

Cenário B (lançamento explícito):

- (void) add {
   // array is an instance of NSMutableArray

   MyClass *obj = [[MyClass alloc] init];

   [array addObject:obj];

   [obj release];
}

Eu suponho que ambos estão corretos, mas não tenho certeza, e com certeza não sei qual é o modo preferido.

Os gurus do Objective-C podem lançar alguma luz sobre isso?

questionAnswers(7)

yourAnswerToTheQuestion