Domanda

In Objective-C, è possibile dichiarare un blocco ad essere sincronizzato su un oggetto utilizzando il costrutto @synchronized. Sarebbe simile a questa:

@synchronized (self) {
    // Do something useful
}

Tuttavia, sono curioso di sapere cosa esattamente self si riferisce a quando si dispone di un metodo statico (+ invece di -). Ho provato a guardare attraverso la documentazione di Apple, e alludono al fatto che è OK, ma in realtà non lo spiego. So che funziona, io sono solo curioso di ciò che significa.

È stato utile?

Soluzione

self all'interno di un metodo di classe (statico) fa riferimento all'oggetto classe.

Altri suggerimenti

In Objective-C self è determinata dal contesto. In un metodo di istanza, che sarebbe il caso chiamato. In un metodo statico, sarebbe l'oggetto classe stessa (cioè il risultato di [self class] in un metodo di istanza)

Con le risposte di cui sopra, solo tenere presente che se un thread chiama un metodo di istanza utilizzando @synchronized (auto), e un altro thread chiama un metodo di classe utilizzando @synchronized (self), alcuna sincronizzazione avverrà da una chiamata, perché utilizzano diversi oggetti per la sincronizzazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top