Swift delegation - wann soll ein schwacher Zeiger auf delegate @ verwendet werde

Kann jemand erklären, wann und wann eine "schwache" Zuweisung an einen Delegatenzeiger in Swift verwendet werden soll und warum?

ein Verständnis ist, dass Sie, wenn Sie ein Protokoll verwenden, das nicht als Klasse definiert ist, Ihren Delegate-Zeiger nicht zu schwach zuordnen können oder möchte

protocol MyStructProtocol{
    //whatever
}

struct MyStruct {
    var delegate: MyStructProtocol?
}

Wenn Ihr Protokoll jedoch als Klassentyp-Protokoll definiert ist, möchten Sie Ihren Delegaten auf einen schwachen Zeiger setzen?

protocol MyClassProtocol:Class{
    //whatever
}

class MyClass {
    weak var delegate: MyClassProtocol?
}

Hab ich recht? In Apples Schnellanleitung werden in den Beispielen für Klassenprotokolle keine schwachen Zuweisungen verwendet, aber in meinen Tests werden starke Referenzzyklen angezeigt, wenn meine Delegierten nicht schwach referenziert sind.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage