Delegación rápida: cuándo usar un puntero débil en el delegado

¿Alguien puede explicar cuándo y cuándo no usar una asignación 'débil' para un puntero delegado en Swift, y por qué?

Tengo entendido que si usa un protocolo que no está definido como una clase, no puede, ni quiere, asignar su puntero delegado a débil.

protocol MyStructProtocol{
    //whatever
}

struct MyStruct {
    var delegate: MyStructProtocol?
}

Sin embargo, cuando su protocolo se define como un protocolo de tipo de clase, ¿DESEA configurar su delegado en un puntero débil?

protocol MyClassProtocol:Class{
    //whatever
}

class MyClass {
    weak var delegate: MyClassProtocol?
}

¿Estoy en lo correcto? En la guía rápida de Apple, los ejemplos de protocolos de clase no utilizan asignaciones débiles, pero en mis pruebas veo ciclos de referencia sólidos si mis delegados no tienen referencias débiles.