2016-04-05 10 views
5

In Java haben wir die ThreadLocal Klasse:Equivalent auf Objective C/Swift von Java Thread Variablen

Diese Klasse Thread-lokale Variablen zur Verfügung stellt. Diese Variablen unterscheiden sich von ihren normalen Gegenstücken darin, dass jeder Thread, der auf einen zugreift (über seine get oder set-Methode), seine eigene, unabhängig initialisierte Kopie der Variablen hat. ThreadLocal Instanzen sind normalerweise private static Felder in Klassen, die den Status einem Thread zuordnen möchten (z. B. eine Benutzer-ID oder Transaktions-ID).

Beispiel:

private static final ThreadLocal<StringBuilderHelper> 
    threadLocalStringBuilderHelper = new ThreadLocal<StringBuilderHelper>() { 
     @Override 
     protected StringBuilderHelper initialValue() { 
      return new StringBuilderHelper(); 
     } 
    }; 

Gibt es eine Entsprechung in Objective C oder Swift, dieses Verhalten zu simulieren? Kann ich einfach auf Swift verwenden:

und das gleiche Ziel erreichen?

+0

Mögliche Duplikat [Thread-Local Storage und iOS] (http://stackoverflow.com/questions/6557768/thread-local-storage- und-ios) – Cootri

+0

Sind Sie sicher, dass Sie Threads und nicht GCD wollen? http://stackoverflow.com/questions/11962850/is-there-a-queue-dictionary-for-a-gcd- – Darko

Antwort

8

Werfen Sie einen Blick auf NSThread threadDictionary. Ich glaube, das ist ungefähr das Gleiche.

könnten Eine typische Anwendung in Objective-C:

NSMutableDictionary *threadData = [[NSThread currentThread] threadDictionary]; 
threadData[someKey] = someObject; // write 

someObject = threadData[someKey]; // read 
Verwandte Themen