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.


Publicações relacionadas