Avatar ·

Wie man eine schwache Referenz auf ein Protokoll in reinem Swift (ohne @objc) erstellt

Hallo zusammen! Ich lerne Swift und versuche, das Delegaten-Muster zu implementieren, bin aber auf ein Problem mit Speicherlecks gestoßen. Ich habe ein Protokoll:\n\n```swift\nprotocol MyDelegate: class {\n func didSomething()\n}\n\nclass MyClass {\n var delegate: MyDelegate?\n \n func doSomething() {\n delegate?.didSomething()\n }\n}\n```\n\nIch weiß, dass man in Objective-C `weak` für Protokolle verwenden konnte, die mit `@objc` markiert waren. Aber ich möchte in reinem Swift schreiben. Wenn ich versuche:\n\n```swift\nweak var delegate: MyDelegate?\n```\n\ngibt der Compiler einen Fehler aus: `'weak' may only be applied to class and class-bound protocol types`. Ich habe gelesen, dass man das Protokoll von `AnyObject` erben lassen oder `class` in der Protokolldefinition verwenden muss. Aber ich verstehe nicht ganz, wie das funktioniert und was der Unterschied ist.