Ich bin sehr neu zu Swift und Programmierung im Allgemeinen, ein bisschen Fortran 77 zurück, und in letzter Zeit einige einfache Programmierung von Mikrocontrollern. Ich arbeite durch die Grundlagen und alles war gut, bis ich auf etwas gestoßen bin, mit dem ich mich nicht ganz fertig machen kann - Delegierte. Alle Online-Posts verstehen das Konzept nicht ganz, zumindest für mich. Um mir also etwas zu geben, auf das ich zurückgreifen kann, habe ich eine grundlegende Vorlage eingerichtet, die unten auf dem Spielplatz gezeigt wird. Wenn ich den Code unten ausführe, funktioniert es und druckt "etwas getan" zum Terminal, aber wenn ich das Protokoll ein "Klassen" Protokoll dh "Protokoll SomeDelegate: Klasse {" mache und den "var Delegierten" einen "schwachen var Delegierten" mache Wie in verschiedenen Beiträgen empfohlen, funktioniert es nicht - was mache ich falsch?Einfache schnelle Delegierte in swift Spielplatz
5
A
Antwort
3
Es wird nicht gedruckt, weil der Delegat gleich nach dem Festlegen nicht mehr aktiv ist. Der Grund dafür ist einfach: keine Instanz besitzt es (die Referenzzahl ist Null). Niemand besitzt delegate
, weil Sie es als eine schwache Eigenschaft von OtherClass deklariert haben. Versuchen Sie, eine Eigentümerschaft, z.
var myVar = OtherClass()
let viewController = MyViewController()
myVar.delegate = viewController
Obwohl Delegierte schwach ist, wird es nun Something done
wieder drucken.
Delegierte als schwach zu deklarieren macht Sinn, weil es zirkuläre Verweise verhindert, die dazu führen, dass delegate niemals im Speicher freigegeben wird - das ist eine ganz andere Geschichte - überprüfen Sie, wie Referenzzählung funktioniert, dann werden Sie verstehen, warum dies eine gute Übung ist.
Verwandte Themen
- 1. Protokollvererbung + Delegierte in Swift
- 2. Swift Spielplatz ist nicht installiert
- 3. Swift Delegierte und Protokoll
- 4. Segmentation Fault in Swift Spielplatz
- 5. Swift Spielplatz Ausführung Geschwindigkeit
- 6. Einfache schnelle Farbauswahl Popover (iOS)
- 7. Datei in Swift, iOS Spielplatz lesen
- 8. Schnelle einfache Objektserialisierung
- 9. Swift Spielplatz Ergebnis falsche Position
- 10. iOS-Dokumentation für Delegierte in Swift?
- 11. Wie STDIN in Swift Spielplatz zu nehmen
- 12. Swift: UIWebView in Spielplatz nicht sichtbar
- 13. rekursive Funktion in XCode Spielplatz (Swift)
- 14. Wie sehe ich Ausnahmen in Swift Spielplatz?
- 15. anzeigen Tableview in Swift Spielplatz für iPad
- 16. Lesen Sie plist in Swift 3 Spielplatz
- 17. Einfache Swift-Array-Erweiterung
- 18. Schnelle und einfache Wirkung jQuery
- 19. swift 3 WKWebView Delegierte WKNavigationDelegate Mehrdeutige Methode
- 20. Einfache schnelle 2-Wege-Verschlüsselung in PHP
- 21. Swift 2.2 #selector für Delegierte/Protokoll Kompilierungsfehler
- 22. Rede zu Text macOS Swift Spielplatz
- 23. Bild von xcode Spielplatz in Ressourcen-Ordner in Swift speichern
- 24. Einfache, schnelle SQL-Abfragen für flache Dateien
- 25. schnelle einfache Präzision Matrix Zeiten Vektor Produkt
- 26. Einfache und schnelle C++ - Komprimierungsbibliothek/Klasse
- 27. A UIImage Grey in Swift 3 Spielplatz URLSession Async
- 28. Swift: Überprüfung ist gültig URL in OS X Spielplatz
- 29. anonyme Delegierte in C#
- 30. Delegierte in Threads verwendet?