Continuando o estudo do último texto, vamos agora trabalhar com um tipo mais completo de array, a classe NSMutableArray
.
Pré-requisitos
- Conhecer o trabalho com classes e propriedades;
- Conhecer o trabalho com métodos;
- Conhecer a classe
NSString
; - Conhecer a classe
NSNumber
; - Conhecer a classe
NSArray
.
♫ Take a Look Around, da banda Limp Bizkit ♪
Conceitos
No artigo passado eu comentei que ensinaria o trabalho com o array que permite mudança de conteúdo. A questão é bem simples: em Objective-C existem diversos tipos de dados que possuem versões mutáveis e imutáveis. Isso quer dizer que alguns tipos de dados podem ter adição e remoção de conteúdo, enquanto outros não possuem essa característica.
Eu não estou falando de troca de valores, já que a reatribuição é permitida; estou falando de, por exemplo, adicionar mais dados aos que já foram alocados. E nesse contexto podemos dizer que os objetos NSArray
são imutáveis pois eles não podem ter registros adicionados ou apagados. Sendo assim, usamos a classe NSMutableArray
quando nossas coleções precisarem ter essa capacidade.
Como sempre, vamos à prática para facilitar a compreensão.
Prática
Vamos criar um novo projeto chamado Classe_NSMutableArray e fazer a seguinte definição:
Já começo mostrando uma abordagem que vocês só poderão usar com NSMutableArray
— uma vez que um NSArray
simples não pode ter adição de registros, ele não deve ser declarado vazio. Já um MutableArray
, por ter essa capacidade de receber elementos depois de criado, pode tranquilamente ser declarado sem nenhum objeto inicial.
Tendo nossa coleção criada, vamos agora adicionar alguns elementos.
É o método addObject
que nos permite adicionar elementos em um objeto NSMutableArray
. Nesse código, eu inseri três registros no array que estava vazio. Uma observação importante é que, com ele, só podemos adicionar um objeto por vez. Porém, esse registro pode ser um array — então as possibilidades são infinitas.
Agora tendo alguns elementos em nossa coleção, vamos exibir o MutableArray
em um log:
A impressão de um objeto array no log exibe todos os registros do array. Notem também que o conteúdo do array é exibido dentro de parênteses.
Uma vez que nós tenhamos os registros armazenados no NSMutableArray
, a operação de acesso aos elementos é a mesma do NSArray
, até porque a classe NSMutableArray
herda todas as características de NSArray
.
Se por um lado temos recursos para adicionar elementos, por outro também existem recursos para apagar registros.
Existem diversas opções para remover registros de um objeto NSMutableArray
. O método removeObjectAtIndex
usa como referência a posição do elemento, enquanto o método removeObject
baseia-se no próprio registro que será removido. A título de informação, também existe o método removeAllObjects
, o qual limpa completamente os registros de um NSMutableArray
.
Em linhas gerais, as operações mais comuns em um objeto NSMutableArray
são adições e remoções de elementos. Existem outros recursos como substituições e ordenações, mas a pesquisa por eles faz parte do estudo de vocês.
Uma vez que vocês tenham visto e testado as diferenças entre um array mutável e um imutável, a recomendação é sempre analisar bem o requisito antes de começar seu código. Um objeto imutável é, em linhas gerais, mais indicado por consumir menos recursos do sistema, mas em algumas situações não existe como evitá-los. Então a dica é sempre analisar se a sua lista de objetos precisará de alterações durante seu código.
Finalizo, como sempre, deixando o espaço para dúvidas e debates no tópico oficial do fórum da Quaddro Treinamentos. E confira aqui todos os artigos que já publicamos no MacMagazine.
Um abraço e até a próxima!