2016-04-05 14 views
5

In Java, abbiamo la classe ThreadLocal:equivalente su Objective C/Swift di Java ThreadLocal variabili

Questa classe fornisce le variabili thread-locale. Queste variabili differiscono dalle rispettive controparti normali in quanto ogni thread che accede a uno (tramite il suo metodo get o set) ha una propria copia inizializzata indipendente della variabile. Le istanze ThreadLocal sono in genere i campi private static in classi che desiderano associare lo stato a un thread (ad esempio, un ID utente o ID transazione).

Esempio:

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

C'è qualche equivalente in Objective C o Swift per simulare questo comportamento? Posso usare Swift:

static let String = someInitialValue() 

e raggiungere lo stesso obiettivo?

+0

Eventuali duplicati di [stoccaggio Thread-Local e iOS] (http://stackoverflow.com/questions/6557768/thread-local-storage- e-ios) – Cootri

+0

Sei sicuro di volere discussioni e non GCD? http://stackoverflow.com/questions/11962850/is-there-a-queue-dictionary-for-a-gcd- – Darko

risposta

8

Dai un'occhiata allo NSThread threadDictionary. Credo che sia all'incirca la stessa cosa.

Un utilizzo tipico in Objective-C potrebbe essere:

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

someObject = threadData[someKey]; // read