Como usar propriedades declaradas em seu aplicativo ios

Embora as propriedades e acesso à variável de instância e os assessores são muitas vezes purê juntos nas mentes dos programadores de aplicativos iOS, certifique-se de compreender a natureza única de propriedades e como eles realmente funcionam.

Enquanto que métodos estão preocupados com o envio de mensagens para objetos para fazer as coisas, Propriedades estão preocupados com o estado dos objetos. Frameworks e outros objetos se comportam com base no que eles encontram em suas propriedades (portanto, você pode modificar o comportamento objeto alterando uma propriedade).

Você também pode querer saber algo sobre o estado do objeto, tais como a sua cor, ou cerca de controlador de vista raiz de uma janela.

controladores de vista da sua aplicação, que atuam como uma ponte entre os pontos de vista e o modelo, precisa ser capaz de encontrar o modelo de objeto para obter os dados e enviá-lo atualiza. Tudo isso é feito usando propriedades. A propriedade tem o seguinte aspecto:

@property (forte, nonatomic) IBOutlet UIImageView * car-

Mas nem todas as propriedades são tomadas. Se você selecionar a RTAppDelegate.h arquivo no Inspetor de Projetos, você pode ver que ele inclui uma propriedade:

@property (nonatomic forte,) * UIWindow Janela-

Como você pode ver, a ordem dos atributos (forte, contra nonatomic nãonatomic, forte) Não importa.

O que compreende uma propriedade declarada

A propriedade declarada tem duas partes: a sua declaração ea sua implementação.

Video: This is iOS 10's New Home App

A declaração usa o @propriedade palavra-chave, seguido por um conjunto opcional parênteses de atributos, o tipo de informação, bem como o nome da propriedade.

Acesso às propriedades é implementado por métodos de acesso (embora dentro da classe que declara a propriedade, a propriedade pode ser acessado diretamente, assim como variáveis ​​de instância são). Você pode escrever seus próprios métodos de acesso ou você pode deixar o compilador fazer isso por você.

Os nomes padrão para os métodos get e set associados com uma propriedade são whateverThePropertyNameIs para o getter e setWhateverThePropertyNameIs: para o setter. No caso de viagem, o método é getter viagem, e o método de ajuste é setTrip:.

Para acessar o viagem propriedade no appDelegate, você usaria

AppDelegate * appDelegate = [[UIApplication sharedApplication] delegado] -Trip * thisTrip = [viagem appDelegate] -

ou para definir essa propriedade, use

AppDelegate * appDelegate = [[UIApplication sharedApplication] delegado] - [appDelegate setTrip: newTrip] -

delegar, por sinal é um UIApplication propriedade.

Usando a sintaxe dot

Objectivo-C proporciona um ponto (.) Operador que oferece uma alternativa à notação colchete ([]) Para invocar métodos de acesso. Você usa sintaxe de ponto, da mesma forma que você iria ao acessar um elemento da estrutura C:

Video: TOP 10 BEST iOS APPS 2017 | MUST HAVE

Trip * thisTrip = appDelegate.trip-

ou para definir essa propriedade, use

appDelegate.trip = newTrip-


Quando usado com objetos, no entanto, sintaxe de ponto atua como “açúcar sintático” - é transformado pelo compilador em uma mensagem de assessor. A sintaxe de ponto não fica diretamente ou definir uma variável de instância. Os exemplos de código que o utilizam são o equivalente exacto para usando a notação suporte.

Muitos programadores como a sintaxe de ponto, porque podem ser mais readable- basta pensar daquelas situações notação colchetes, onde você está acessando uma propriedade que é uma propriedade de outro objeto (que em si é uma propriedade de outro objeto, e assim por diante).

A vantagem real da sintaxe de ponto, porém, é que o compilador irá gerar um erro quando detecta uma tentativa de escrever para uma propriedade declarada somente leitura. Isto é muito melhor do que ter que se contentar com um método não declarado Atenção porque você invocado um método setter inexistente, com o aplicativo posteriormente falhar em tempo de execução.

Quando você usa o compilador para criar métodos de acesso para você, o compilador cria uma variável de instância do tipo que você tenha declarado que ele vai usar para armazenar e recuperar o valor da propriedade com o nome da propriedade. Por exemplo, para a seguinte propriedade:

@property (fraco, nonatomic) IBOutlet UIImageView * car-

a declaração

@synthesize car-

gera uma variável de exemplo com o nome de carro do UIImage tipo .

No entanto, se você deixar o compilador gerar automaticamente um @synthesize declaração para você, ele realmente usa um nome de variável de instância que começa com um caractere sublinhado, de modo que se obtém o seguinte código gerado para você nos bastidores:

carro @synthesize = _car-

Isso permite que você distinguir entre o nome da propriedade (acessado por self.car) E o nome da variável exemplo (acedido simplesmente como _carro).

Video: Top 10 iOS Productivity Apps

A Apple recomenda que você use a referência da propriedade (self.car) Em métodos normais, mas a usar _carro variável no nisso métodos. Isso se aplica somente ao código dentro de um arquivo. Código em qualquer lugar em seu aplicativo acessa a propriedade, uma vez que é declarado na @interface seção do .h.

Não há nenhuma maneira que o código em qualquer lugar do aplicativo, exceto no .m arquivo de uma classe pode acessar a variável de instância diretamente quando você deixar o compilador fazer o trabalho. E isso é uma coisa boa para garantir que encapsulamento é adequadamente fornecido.

Escrever seus próprios assessores

Você não tem que usar os acessores gerados pelo compiler- e, às vezes, ele ainda faz sentido para implementá-las você mesmo. Se você implementar os métodos de acesso, você deve se certificar de que a sua abordagem coincide com os atributos que você declarados.

Por exemplo, se você tem um monte de sobrecarga para criar um objeto que não pode ser usado, você pode criar seu próprio assessor getter que cria o objeto da primeira vez que é acessado. Além disso, escrever o seu próprio assessor significa que você não tem que ter uma variável de instância associado à propriedade.

Você poderia, por exemplo, têm uma área propriedade em um objeto que representa um retângulo. O getter para área pode realizar x largura comprimento e nunca se preocupar com uma variável de instância.

Acessando variáveis ​​de instância com assessores

Se você não usar auto, você acessa a variável de instância diretamente. No exemplo a seguir, o conjunto accessor método para _currentDestinationIndex não é invocado:

_currentDestinationIndex = [[NSUserDefaultsstandardUserDefaults] objectForKey: CurrentDestinationKey] -

O precedente não é o mesmo que

Video: Top 10 iOS Apps of September 2016!

self.currentDestinationIndex = [[NSUserDefaultsstandardUserDefaults] objectForKey: CurrentDestinationKey] -

Para usar um sistema de acesso, você deve usar auto.


Publicações relacionadas