A função do protocolo:
1. Defina um conjunto de interfaces públicas (públicas)
@required: métodos que devem ser implementados, todos os métodos em @protocol devem ser implementados por padrão.
@opcional: método de implementação opcional (não pode ser implementado)
2. Transferência de valor de delegado:
É um padrão de design em si mesmo e significa confiar que outros façam algo.
Por exemplo: para passar valores entre duas classes, a classe A chama o método da classe B, a classe B encontra um problema no processo de execução para notificar a classe A, desta vez precisamos usar um delegado (Delegate).
Outro exemplo: a transferência de valor entre o controlador (Controlador) e o controlador (Controlador), pular de C1 para C2 e depois retornar de C2 para C1, precisa notificar C1 para atualizar a IU ou fazer outras coisas, então iremos Use o delegado (Delegado) para passar o valor.