Como escrever métodos de acesso para aplicativos ios
Para tornar as variáveis de instância disponíveis fora da sua classe que define de uma forma controlada, a melhor prática no desenvolvimento de aplicativos iOS é escrever métodos de acesso (também chamado getters e setters). Propriedades fornecem uma maneira declarativa para fazê-lo através do uso do @property directivas propriedade e @synthesize.
Usando um estilo declarativo, você faz o seu programa fazer algo sem escrever qualquer código. Código é escrito, mas pelo compilador (que gera automaticamente os métodos de acesso), não por você.
Um exemplo de uma propriedade da classe StackOfInteger segue em seguida. A idéia é permitir que um usuário dessa classe para ler o ponteiro de pilha sem expor a última variável e sem escrever quaisquer novos métodos.
Para começar, a propriedade deve ser declarado na interface da classe StackOfInteger. O seguinte trecho mostra como fazê-lo usando a diretiva compilador @property:
@ interface StackOfInteger: NSObject {@protected // Este é o defaultNSMutableArray * elementos- @ última int privado -} @ propriedade (somente leitura, atômica) int stackPointer- ... outros StackOfInteger métodos-d
Note-se que, embora o termo propriedade parece ser mais estreita no sentido de uma variável do que a um método, a definição de propriedades passa na secção em que os métodos são definidos, não onde as variáveis de instância são definidos. Note também que esta propriedade tem dois atributos: atômico e somente leitura.
Para ser claro, meios atômicos que o acesso simultâneo segurança é fornecida e somente leitura significa que esta propriedade pode ser lido, mas não modificado.
Em seguida, você precisa para sintetizar a propriedade usando a diretiva @synthesize, o que significa que ou uma nova variável de instância deve ser gerado para a propriedade ou uma variável de instância existente deve ser ligado a ela. Veja como você gerar uma nova variável de instância nomeado o mesmo que a propriedade stackPointer:
@synthesize stackPointer-
Neste exemplo, a propriedade stackPointer está ligada à última variável de instância. A directiva sintetizar parece com isso:
@synthesize stackPointer = de último
A propriedade está agora pronto para usar.
Você pode usar a propriedade de duas maneiras, como mostrado na função principal do exemplo:
Você pode usar um método de acesso:
printf ("Contagem de elementos% dn", [MyStack stackPointer]) -
Ou você pode usar a notação de ponto para fazer a mesma coisa, como mostrado aqui:
printf ("Contagem de elementos usando a notação de ponto% dn", MyStack.stackPointer) -
A notação chamado ponto é apenas uma abreviação para uma chamada de método. Em vez de utilizar os colchetes, [método de instância], por exemplo, simplesmente escrever instance.method.
Note-se que os nomes do assessor (getters e setters) seguem uma convenção de nomenclatura. O método getter é o nome da propriedade. Assim, para o stackPointer propriedade, o método getter é também stackPointer. O método setter é o nome da propriedade em caso de camelo prefixado pelo conjunto string - o nome do método setter para stackPointer é setStackPointer.
Usar camelo caso ortografia (Uma letra maiúscula no meio de um termo) ao soletrar estes métodos. Portanto, o S na palavra pilha é maiúscula no nome do método setter, mesmo que ele não está capitalizado em nome da propriedade. Note que o método setter não é gerado para esta propriedade porque ele é somente leitura.
É hora de passar para os atributos de propriedades. Eles estão todos na lista a seguir, juntamente com o que eles fazem:
nonatomic: Por padrão, os métodos de acesso gerados para propriedades incluem bloqueio para torná-las seguras para o acesso simultâneo por programas multithread. Especificamente, o comportamento padrão é atômica. Se você usar o atributo nonatomic, nenhum bloqueio é usado.
Não é um atributo chamado atômica (operação atômica é assumida pela falta do atributo nonatomic).
readwrite: Se você usar essa propriedade, que podem ser gravados, bem como ler. Tanto um getter e um setter são disponibilizados mediante síntese.
readonly: O compilador faz apenas uma getter disponíveis.