Singleton in Swift

8

Ich habe versucht, ein Singleton zu implementieren, das als Cache für Fotos verwendet wird, die ich aus dem Internet in meine iOS-App hochgeladen habe. Ich habe im folgenden Code drei Varianten angehängt. Ich habe versucht, Variante 2 zum Laufen zu bringen, aber es verursacht einen Compiler-Fehler, den ich nicht verstehe und möchte Hilfe bekommen, was ich falsch mache. Variante 1 macht das Caching, aber ich mag nicht die Verwendung einer globalen Variable. Variante 3 macht das eigentliche Caching nicht und ich glaube es liegt daran, dass ich eine Kopie in der Zuordnung zu var ic = .... bekomme, ist das richtig?

Jede Rückmeldung und Einsicht wird sehr geschätzt.

Danke, Zvi

%Vor%     
zvweiss 04.11.2014, 18:15
quelle

3 Antworten

19

Das Standard-Singleton-Muster ist:

%Vor%

Und Sie würden es so verwenden:

%Vor%

Kredit an appzYourLife, um darauf hinzuweisen, dass man es als final deklarieren sollte, um sicherzustellen, dass es nicht zufällig subclassed ist, sowie die Verwendung des Zugriffsmodels private für den Initialisierer, um sicherzustellen, dass Sie nicht versehentlich eine andere Instanz instanziieren . Siehe Ссылка .

Wenn Sie also zu Ihrer Bild-Cache-Frage zurückkehren, würden Sie dieses Singleton-Muster verwenden:

%Vor%

Dann können Sie:

%Vor%

Oder

%Vor%

Nachdem wir oben eine simple Singleton-Cache-Implementierung gezeigt haben, sollten Sie beachten, dass Sie wahrscheinlich (a) durch Verwendung von NSCache ; und (b) reagieren auf den Speicherdruck. Die eigentliche Implementierung ist also in Swift 3 so etwas wie folgt:

%Vor%

Und Sie würden es wie folgt verwenden:

%Vor%

Und

%Vor%

Beispiel für Swift 2.3 finden Sie unter vorherige Überarbeitung dieser Antwort.

    
Rob 04.11.2014, 19:40
quelle
1

Im Folgenden sind die zwei verschiedenen Ansätze zum Erstellen Ihrer Singleton-Klasse in swift 2.0

Ansatz 1) Dieser Ansatz ist die Implementierung von Objective C über swift.

%Vor%

Ansatz 2) Eine Zeile Singleton, Vergessen Sie nicht, die private init (Einschränkung der Verwendung von nur Singleton) zu implementieren

%Vor%

Rufen Sie die Singleton-Methode wie folgt auf:

%Vor%     
Himanshu Mahajan 29.10.2015 16:43
quelle
0

Schnell 3:

%Vor%

Rufen Sie eine Methode auf:

%Vor%

Rufen Sie eine Methode auf, indem Sie eine neue Klasseninstanz erstellen (fehlgeschlagen):

%Vor%     
Peter Kreinz 03.11.2015 13:37
quelle

Tags und Links