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.
Conteúdo
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.