protocolo rápido 'fraco' não pode ser aplicado a tipos que não são de classe

Estou um pouco confuso. Qual é a diferença entreprotocol A : class { ... } eprotocol A{ ... }e qual devemos usar rapidamente?

PS: recebemos um erro quando escrevemos assim

protocol A{ ... }

weak var delegate: A

erro: 'fraco' não pode ser aplicado ao tipo sem classe

questionAnswers(2)

yourAnswerToTheQuestion