Frage

In Objective-C können Sie einen Block mithilfe von als mit einem Objekt synchronisiert deklarieren @synchronized bauen.Es würde ungefähr so ​​aussehen:

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

Allerdings bin ich gespannt, was genau self bezieht sich darauf, wenn Sie eine statische Methode haben (+ anstatt -).Ich habe versucht, die Apple-Dokumente durchzusehen, und sie deuten darauf hin, dass es in Ordnung sei, erklären es aber nicht wirklich.Ich weiß, dass es funktioniert, ich bin nur neugierig, was es bedeutet.

War es hilfreich?

Lösung

self innerhalb einer Klasse (statisch) Methode bezieht sich auf das Klassenobjekt.

Andere Tipps

In Objective-C self wird durch den Kontext bestimmt. In einer Instanzmethode wäre, dass die Instanz aufgerufen wird. In einer statischen Methode wäre es das Klassenobjekt selbst sein (das heißt das Ergebnis der [self class] in einer Instanzmethode)

Bedenken Sie bei den obigen Antworten nur, dass, wenn ein Thread eine Instanzmethode mit @synchronized (self) aufruft und ein anderer Thread eine Klassenmethode mit @synchronized (self) aufruft, keine Synchronisierung zwischen den beiden Aufrufen stattfindet, da dies der Fall ist Verwendung verschiedener Objekte zur Synchronisierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top