weak kann nicht auf den Nicht-Klassen-Typ uiimageview angewendet werden

8

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%     
user1709076 15.05.2015, 00:53
quelle

3 Antworten

25

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

    
Learner 22.07.2015 12:49
quelle
8
  

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.

    
matt 15.05.2015 00:56
quelle
2

Sie versuchen, weak auf Array vom Typ UIImageView anzuwenden. Array ist eine Struktur.

    
Eendje 15.05.2015 00:56
quelle

Tags und Links