Question

Dans Objective-C, vous pouvez déclarer un bloc comme étant synchronisé sur un objet en utilisant la construction @synchronized. Il ressemblerait à quelque chose comme ceci:

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

Cependant, je suis curieux de savoir ce self exactement fait référence lorsque vous avez une méthode statique (+ au lieu de -). J'ai essayé en regardant à travers les documents d'Apple, et ils font allusion être OK, mais ne l'explique pas vraiment. Je sais que cela fonctionne, je suis curieux de savoir ce que cela signifie.

Était-ce utile?

La solution

self à l'intérieur d'une méthode de classe (statique) se réfère à l'objet de classe.

Autres conseils

Dans self Objective-C est déterminé par le contexte. Dans une méthode d'instance, ce serait l'instance appelée. Dans un procédé statique, il serait l'objet de classe lui-même (à savoir le résultat de [self class] dans une méthode d'instance)

Avec les réponses ci-dessus, il suffit de garder à l'esprit que si un thread appelle une méthode d'instance à l'aide @synchronized (auto), et un autre thread appelle une méthode de classe en utilisant @synchronized (auto), aucune synchronisation se produira entre les deux appels, parce qu'ils utilisent des objets différents pour la synchronisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top