Wie man Methode Swizzling Swift 3.0 implementieren?
Wie kann ich eine Methode implementieren swizzling in Swift 3.0 ?
Habe ich gelesen nshipster Artikel darüber, aber in diesem code - chunk
struct Static {
static var token: dispatch_once_t = 0
}
der compiler gibt mir eine Fehlermeldung
dispatch_once_t ist nicht verfügbar in Swift: Verwenden Sie träge initialisiert
globals statt
Kommentar zu dem Problem - Öffnen
Die Fehlermeldung ist ein bisschen stumpf; es ist in Ordnung, verwenden Sie ein
static
- Variablen, die als static
- Variablen werden automatisch erstellt, genau sobald, die Auftritt, wenn Sie das erste mal zugegriffen wird (d.h., träge). static var token = 0
ist der richtige Weg, dies zu tun in Swift 3. Quelle InformationsquelleAutor der Frage Tikhonov Alexander | 2016-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst
dispatch_once_t
ist nicht verfügbar in Swift 3.0.Sie können wählen Sie aus zwei alternativen:
Globale variable
Statische Eigenschaft
struct
,enum
oderclass
Für mehr details, sehen, dass Wohin dispatch_once in Swift 3
Für verschiedene Zwecke, müssen Sie verwenden unterschiedliche Umsetzung von swizzling
Swizzling Cocoa-Touch-Klasse
Beispiel swizzling
viewWillAppear(_:)
vonUIViewController
Verwendung von globalen VariablenSwizzling benutzerdefinierte Swift-Klasse
Verwenden Methode swizzling mit Ihrer Swift-Klassen es gibt zwei Anforderungen, die Sie erfüllen müssen (für mehr details):
NSObject
dynamic
AttributUnd Beispiel swizzling-Methode der benutzerdefinierten Swift base Klasse
Person
InformationsquelleAutor der Antwort Tikhonov Alexander
@TikhonovAlexander: Super Antwort,
Modifizierte ich die swizzler beide Selektoren und machte es mehr generische.
Swift 3
Swift 4
InformationsquelleAutor der Antwort efremidze
swizzling Spielplatz
Ausgabe:
4
1
InformationsquelleAutor der Antwort Dharay Mistry