2016-06-14 5 views
2

Als neuer Entwickler bin ich ein wenig unsicher, wie viel wir mit Swift auf iOS hinter uns bringen sollten. Es gibt viele verschiedene Informationen, da sich dies seit den Anfängen von iOS ebenfalls stark verändert hat.Mit Swift für iOS, wie viel Säuberung sollten wir tun?

Also wenn wir statische Ansichten haben und Storyboard verwenden, bekomme ich die Idee, dass alles für uns gereinigt wird und wir (fast) nichts tun müssen.

Aber was ist, wenn ich meine Ansicht dynamisch basierend auf Benutzerklicks erstellen? Und was ist der beste Ansatz, um Referenzen zu klären, falls dies notwendig ist?

Im Moment bin ich dabei, wie ich in Android tun würde einfach Einstellungen Meine globale Referenz auf Null, bevor ich eine neue Instanz einer Ansicht usw. machen habe ich gelesen, das wie getan werden sollte:

myView?.removeFromSuperview() 
+1

Wenn Ihr Ziel eine Bereinigung ist, sollten Sie 'removeFromSuperview' nicht aufrufen müssen. Wenn Ihr Ziel die Benutzeroberfläche ändert, rufen Sie 'removeFromSuperview' gegebenenfalls auf. Wenn Sie Referenzen und schwache Referenzen richtig verwenden (wie es Apple ziemlich gut macht), gibt es fast keinen "Bereinigungs" -Code, der in Swift geschrieben werden muss. – nhgrif

Antwort

1

Obwohl der von Swift verwendete automatische Reference-Counting-Ansatz sich sehr vom Java-Garbage Collection-Ansatz unterscheidet, ist das Gefühl für Programmierer überraschend ähnlich. Auf der einen Seite müssen Sie sich bewusst sein, dass Sie in Swift zirkuläre Referenzen erstellen können, und schwache Referenzen einfügen, um die Zirkularität zu vermeiden. Auf der anderen Seite können Sie sich darauf verlassen, dass Ihre Ressourcen sofort freigegeben werden, nachdem die letzte Referenz veröffentlicht wurde, und verwenden Sie die Methode deinit, um mit der Bereinigung umzugehen.

Aber was ist, wenn ich meine Ansicht dynamisch stellt sicher Ansichtshierarchie erstellen

Ansichten dynamisch Erstellen und Hinzufügen von ihnen zu Cocoa, dass Ihre Ansichten, wenn Hierarchie Ansicht freigegeben würde entscheidet, dass es nicht braucht, um sie länger.

In Situationen, in denen Views von Cocoa recycelt werden, z. wenn Sie Ansichten zu Tabellenansichtszellen oder Auflistungsansichtszellen hinzufügen. Da Zellen recycelt werden, müssen Sie entweder (1) hinzugefügte Ansichten entfernen, um zu vermeiden, dass sie erneut hinzugefügt werden, oder (2) prüfen, ob die Ansicht hinzugefügt wurde, und wiederverwenden, was bereits vorhanden ist.

Eine Möglichkeit, um zusätzliche Ansichten zu löschen, wenn Zellen recycelt werden, besteht darin, die Methode prepareForReuse zu implementieren und die hinzugefügte Ansicht dort zu entfernen.

1

Auch wenn Sie eine Ansicht dynamisch erstellen, müssen Sie nicht removeFromSuperview aufrufen, da der Verweis der Ansicht auf die Superansicht schwach ist.

Weitere Informationen finden Sie unter this topic.

Verwandte Themen