Liberação de objeto C, autorelease e tipos de dados

Eu sou novo no código gerenciado de memória, mas tenho a idéia muito bem.

Ao tomar meu aplicativo através da ferramenta de vazamentos no XCode, notei que tinha apenas que limpar meus objetos personalizados, mas não criar dinamicamente matrizes, por exemplo, então imaginei que esses tipos de dados fossem liberados automaticamente - faz sentido, pois só tive que liberar os arrays Eu usei como propriedades que tinham (reter) nelas.

Então eu notei algo peculiar: Eu estava recebendo um vazamento em um determinado array inicializado assim:

NSMutableArray *removals = [NSMutableArray new];

mas não semelhante

NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];

Agora, a razão pela qual um foi criado com "novo" é que ele poderia ter de 0 a 99 itens, enquanto o outro que eu conhecia seria sempre 9. Já que os dois arrays são passados ​​para o mesmo método mais tarde com base no usuário interação, eu estava recebendo um vazamento, se eu não liberar no final do método, ou uma exceção, se eu fiz!

Eu mudei o primeiro array para

NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];

e eu não tenho vazamentos e não tenho que liberar nada. Alguém pode explicar?

questionAnswers(3)

yourAnswerToTheQuestion