Delegação rápida - quando usar o ponteiro fraco no delegado

Alguém pode explicar quando e quando não usar uma tarefa 'fraca' para um ponteiro de delegado no Swift, e por quê?

Meu entendimento é que, se você usa um protocolo que não é definido como uma classe, não pode, nem deseja atribuir seu ponteiro de delegado a fraco.

protocol MyStructProtocol{
    //whatever
}

struct MyStruct {
    var delegate: MyStructProtocol?
}

No entanto, quando seu protocolo é definido como um protocolo de tipo de classe, você deseja definir seu representante como um ponteiro fraco?

protocol MyClassProtocol:Class{
    //whatever
}

class MyClass {
    weak var delegate: MyClassProtocol?
}

Estou correcto? No guia rápido da Apple, os exemplos de protocolo de classe não estão usando atribuições fracas, mas nos meus testes, vejo ciclos de referência fortes se meus delegados não são fracamente referenciados.

questionAnswers(3)

yourAnswerToTheQuestion