Wenn ich ein Bild habe, füge ich Sublayer mit CAGradiantLayer ein,
%Vor%und wenn es kein Image für ImageView gibt, muss ich diese Sublayer entfernen. Ich habe verschiedene Wege ohne Erfolg ausprobiert. Das letzte, was ich versucht habe, war
%Vor%aber es gibt mir einen Fehler:
%Vor% Die Ausnahme wird ausgelöst, weil Sie den Inhalt des Arrays sublayers
ändern, während Sie ihn mit foreach loop aufzählen. Dies ist nichts besonderes für Layer, eine ähnliche Ausnahme wird ausgelöst, wenn Sie Objekte hinzufügen oder entfernen, während Sie NSMutableArray aufzählen.
Sie haben verschiedene Möglichkeiten, um dieses Problem zu lösen
Lösung 1: Beenden Sie das Aufzählen, sobald Sie das Array geändert haben.
%Vor%Lösung 2: Zählen Sie das reale Array nicht auf, sondern verwenden Sie seine Kopie.
%Vor%Lösung 3: Verwenden Sie die Schlüsselwertcodierung, um einen Verweis auf die Farbverlaufsebene beizubehalten.
Stellen Sie es nach dem Einfügen ein:
%Vor%Abrufen und entfernen Sie es
%Vor%