Ich habe eine Klasse in swift, die einen schwachen Zeiger auf ein Array von Objekten haben muss, das in einer anderen Klasse zugewiesen ist. Ich habe
%Vor%Der Fehler, den ich bekomme, ist
'weak' kann nicht auf den Nicht-Klassen-Typ '[UIImageView]'
angewendet werden
Ich habe auch vergebens versucht:
%Vor%Schwach Kann nicht auf Nicht-Klassen angewendet werden:
Es bedeutet, dass Sie keine schwache Referenz auf eine Werttypinstanz haben können (z. B. Array, Dictionary, String, usw.), da diese alle eine struct not-Klasse sind. Sie geben nur schwache Referenzen an, die vom Klassentyp sind (zB UIImage, UIImageView, etc ...). In diesem Fall versuchen Sie, eine schwache Referenz auf UIImageView Array zu geben, und wir wissen, dass Array ein Werttyp ist, daher ist es nicht möglich.
Zum Beispiel:
%Vor%Im Falle des Protokolls: Wenn wir nur ein Protokoll vom struct-Typ haben:
%Vor%Wir können Variablen dieses Typs nicht als schwach deklarieren:
%Vor%Aber wenn wir das Protokoll des Klassentyps so machen:
%Vor%Wir können Variablen dieses Typs als schwach deklarieren:
%Vor%Ich denke, Sie verstehen es leicht, warum dies im Protokoll passiert?
Gleicher Grund: Sie geben nur schwache Referenzen vom Typ class
muss einen schwachen Zeiger auf ein Array von Objekten haben
Nun, wie die Fehlermeldung sagt, können Sie nicht. Array ist eine Struktur, keine Klasse. Sie können keine schwache Referenz auf eine Strukturinstanz haben. Es ist ein Werttyp, daher wird% code% Speicherverwaltung nicht ausgeführt.
Es wird auch nicht benötigt - es besteht keine Gefahr eines Rückhaltezyklus, da dies ein Werttyp ist. Sie sollten sich fragen, warum Sie denken, dass es es braucht. Vielleicht denkst du weak
und Optional gehen immer zusammen, aber sie nicht. Sie haben dies bereits als optionales Array deklariert. das ist sicher genug.
Tags und Links swift weak-references