Schwache angewendet werden Kann nicht auf nicht-Klasse Typ:
Es bedeutet, dass Sie nicht einen schwachen Verweis auf einen beliebigen Wert Typ-Instanz (zB Array, Wörterbuch, String, etc ...), weil diese alle sind haben struct nicht klasse. Sie geben nur schwache Referenzen an, die vom Klassentyp sind (z. B. UIImage, UIImageView, etc ...). In diesem Fall versuchen Sie, einen schwachen Verweis auf UIImageView Array anzugeben, und wir wissen, dass Array ein Werttyp ist.
Zum Beispiel:
weak var str: String? //CompileTime Error(Wrong)
weak var arr: Array? //CompileTime Error(Wrong)
weak var imageView: UIImageView? //Correct
Bei Protokoll: Wenn wir nur ein Protokoll von Strukturtyp haben:
protocol SomeProtocol{
func doSomething()
}
Wir können keine Variablen dieses Typs deklarieren als schwach:
weak var delegate: SomeProtocol? //CompileTime Error(Wrong)
Aber wenn wir Protokoll der Klassenart wie folgt machen:
protocol SomeProtocol: class{
func doSomething()
}
Wir können Variablen dieses Typs als schwach erklären:
weak var delegate: SomeProtocol? //Correct
Ich glaube, Sie es leicht verstehen, warum dies in Protokoll geschieht?
Der gleiche Grund: Sie geben nur schwache Referenz, die von Klassen-Typ sind
du bist ein Retter. Vielen Dank – ekeith