Pregunta

En Objective-C, se puede declarar un bloque como siendo sincronizada en un objeto mediante el uso de la construcción @synchronized. Se vería algo como esto:

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

Sin embargo, tengo curiosidad qué es exactamente self se refiere a cuando se tiene un método estático (+ en lugar de -). Probé mirando a través de la documentación de Apple, y aluden a que al estar bien, pero realmente no lo explique. Yo sé que funciona, tengo curiosidad lo que significa.

¿Fue útil?

Solución

self dentro de un método de clase (estática) se refiere a la clase de objeto.

Otros consejos

En Objective-C self se determina por el contexto. En un método de instancia, que sería el ejemplo que se llama. En un método estático, sería el propio objeto de clase (es decir, el resultado de [self class] en un método de instancia)

Con las respuestas anteriores, sólo tener en cuenta que si un subproceso llama a un método de instancia usando @synchronized (auto), y otro subproceso llama a un método de clase utilizando @synchronized (auto), no hay sincronización va a pasar entre las dos llamadas, porque están usando diferentes objetos para la sincronización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top