Noções básicas de protocolos em ios

Por definição um protocolo esclarece conjuntos de métodos que podem ser implementadas por qualquer classe de um aplicativo iOS. Protocolos são usados ​​para definir interfaces que são implementadas por classes. Protocolos são muitas vezes utilizados para especificar a interface para objetos delegados. Com o recurso de protocolo, você pode evitar ter que forçar subclasses, a fim de criar classes polimórficas.

Objective-C (ao contrário do C ++) não permite que uma classe de ter várias superclasses. Protocolos, portanto, são uma característica essencial em Objective-C, porque ele não permite herança múltipla.

Quando uma classe implementa os métodos em um protocolo, a classe é dito conformar-se para o protocolo.

Video: Tutorial iOS: Ejercicio con delegados y protocolos | video2brain

A definição de um protocolo é semelhante à definição de uma interface para uma classe. No entanto, um protocolo não tem uma classe pai ou instância variáveis. Aqui está um exemplo de uma definição de protocolo (para impressão) a partir do programa de calculadora postfix:

@protocol Printable- (void) printMe- // posso deixar de fora @required, uma vez que é o padrão @ opcional - (NSString *) printMeToString - d

Com a chegada (e na verdade, com grande alarde) de objectivo C-2,0, métodos de protocolo pode ser necessária quer (o padrão) ou opcional. Observe que as diretivas de compilador está aqui também.

Video: Protocolos y Delegados en Swift

Aqui está a declaração do StackOfInteger afirmando que ele vai implementar o protocolo:

@ interface StackOfInteger: NSObject 

... -d

Aqui é a implementação do protocolo na classe StackOfInteger:

@implementation StackOfInteger- ... Outros métodos StackOfInteger ... /////////// métodos para implementar o protocolo de impressão //////////// - (void) PrintMe {int k, stackCount = [ elementos contar] -NSLog (@"Empilhe-gt; Última gt; dlt%; n", Auto-gt; última) -para (k = 0- k

Observe que o método printMeToString não é implementada porque é opcional.

Um programa pode testar se um objecto está em conformidade com um protocolo. O código a seguir apresentam-se exemplos deste teste (retirado do programa principal da amostra):

Video: Aula 09 - Protocolo, Expedição, Destinação - Arquivologia - Valentini

 printf ("Testando a conformidade com protocolsn") -se ([MyStack conformsToProtocol: @protocol (imprimível)]) {printf ("Usando o protocolo methodsn") - [MyStack PrintMe] -} else {NSLog (@"Objeto não está de acordo com o protocolo% @ n", @protocol (impressão)) -} ID someObject = [[PostfixCalculator alloc] initWithExpression: @"44 55 *"] -se ([someObject conformsToProtocol: @protocol (impressão)]) {NSLog (@"Objeto não está de acordo com o protocolo") -}

Uma vez que o objecto MyStack está em conformidade com o protocolo, os seus métodos de PrintMe e printMeToString são chamados. Desde someObject (que é tipo de ID para fazer o exemplo mais significativo) não se conforma com o protocolo para impressão, o teste de conformidade falha.

Video: Arquivologia para Concursos (Noções) - Prof. Marco Antonio

Você também pode testar para a existência de um método opcional usando o respondsToSelector método.

Você pode fazer uma classe adotar um protocolo simplesmente executando os métodos definidos pelo protocolo. Ou seja, você não tem que declarar o protocolo em sua interface. No entanto, mesmo que a classe implementa os métodos protocolos, ele vai não ser compatível com o protocolo e irá falhar o teste de conformidade anterior.


Publicações relacionadas