Como personalizar o comportamento das classes do framework ios: subclasses e delegando

Video: Swift 2 - Classes Part 2: Subclasses & Inheritance

Embora você estará criando classes de seus próprios (classes especialmente modelo) para seu aplicativo iOS, muitas vezes você vai querer personalizar o comportamento de uma determinada classe quadro. Você tem três maneiras de ir sobre ele:

Video: iOS 8 creating subclasses

  • subclassing

  • delegando

  • propriedades declaradas

    Video: Swift Tutorial - The Basics - Part 9 - Subclasses

subclassing

Objective-C, como outras linguagens de programação orientada a objeto, permite que você basear uma nova classe em uma classe que já está declarado. A classe base é chamado de superclass- a nova classe é a sua subclasse. Cada subclasse que você define inherits métodos e variáveis ​​de instância de sua superclasse.

Algumas classes de enquadramento são esperados para ser uma subclasse. Entre eles estão controladores de vista, o que você vai ser subclasse um pouco. Na verdade, existem algumas classes que nunca são instanciados diretamente: Estes são chamados abstrato classes. Suas subclasses pode ser instanciado diretamente: Estes são chamados concreto instâncias.

Quase todas as linguagens de programação orientada a objeto apoiar subclasses. No entanto, há um pouco de um problema às vezes. É o chamado herança múltipla problema: é quando você quer uma classe para ser uma subclasse de duas classes. Não há nenhum problema se os dois subclasses estão na hierarquia de classes. Você poderia ter uma classe chamada estrutura, uma subclasse chamada estrutura residencial, e uma subclasse de ambos chamados casa.

Mas o que fazer se você quiser casa para ser uma subclasse tanto de estrutura e de investimento?

O padrão de Delegação



Delegação é um padrão usado extensivamente nos quadros iOS, tanto assim que, se você quiser fazer qualquer trabalho sério de desenvolvimento de aplicativos, você vai ter que colocar sua cabeça em torno dele. Na verdade, quando você Faz compreendê-lo, sua vida vai tornar-se instantaneamente muito mais fácil de gerir.

Em vez de subclassificação um objeto, um objeto delega a tarefa de implementar uma de suas responsabilidades para com outro objeto. Você está usando um objeto rico em comportamento fornecido pela estrutura como é e colocar o código para o comportamento específico do programa num (delegado) objeto separado. Quando é feita uma solicitação do objeto quadro, o método do delegado que implementa o comportamento específico do programa é automaticamente chamado.

estruturas iOS dependem muito do padrão de delegação.

Por exemplo, a UIApplication objeto lida com a maioria do trabalho real necessário para executar o aplicativo. Mas, como você viu, ele envia o delegado do aplicativo aplicação: didFinishLaunchingWithOptions: mensagem a dar-lhe uma oportunidade de criar objetos do modelo que são únicas para a sua aplicação.

Quando um objeto quadro foi projetado para usar delegados para implementar certos comportamentos, os comportamentos que exige (ou lhe dá a opção de implementar) são definidos em um protocolo.

Protocolos definir uma interface que o objeto delegado implementa. Em iOS, protocolos podem ser formal ou informal. protocolos formais incluem suporte para coisas como a verificação de tipo e tempo de execução verificação para ver se um objeto está em conformidade com o protocolo.

Em um protocolo formal, você geralmente não tem que implementar todo o métodos- muitos são declarados opcional, o que significa que você tem que implementar apenas os relevantes para a sua aplicação. Antes de um protocolo formal, tenta enviar uma mensagem para seu delegado, o objeto de host determina se o delegado implementa o método (através de um respondsToSelector: mensagem) para evitar o constrangimento de ramificação em nenhum lugar se o método não é implementado.

Um protocolo pode ser adoptada por qualquer classe, desde que implementa os métodos necessários do protocolo. Assim, através da adopção de um ou mais protocolos e tornando-se um delegado, uma única classe pode implementar a funcionalidade de duas outras classes - ele fornece uma aproximação de herança múltipla.


Publicações relacionadas