Características e implementación de singletons en Objective-C.

Una frase para presentar singleton: a lo largo de todo el programa, no importa cuándo y en qué clase se crea un objeto, el objeto obtenido cuando se crea es siempre el mismo objeto.

Características del singleton :

1. Dado que los objetos creados en diferentes ubicaciones devuelven el mismo objeto, el modo singleton se puede utilizar como un objeto compartido para todo el programa y cualquier módulo puede operar y acceder a las propiedades del objeto singleton en cualquier momento.

2. Algunas personas dicen que las definiciones macro también se pueden compartir globalmente. Sin embargo, otra característica importante de los singleton es que durante la ejecución del programa, los atributos del objeto singleton se pueden modificar de acuerdo con las necesidades reales. Una vez definida la definición de la macro, no se puede modificar durante toda la ejecución del programa.

Ideas de implementación singleton :

Al crear un objeto en Objective-C, se llama al método alloc. Cuando el sistema llama al método allco, se llama al siguiente método

+ (id)allocWithZone:(NSZone *)zone

Podemos anular este método de clase del objeto singleton y devolver el único objeto existente mediante el juicio dentro del método.

El código de implementación específico es el siguiente:

+ (id)allocWithZone:(NSZone *)zone {
    static id instance = nil;
    if (instance == nil) {
        instance = [super allocWithZone:zone];
    }
    return instance;
}

El código anterior simplemente implementa un singleton, pero para el acceso de subprocesos múltiples, es necesario agregar algún código protector, lo cual se discutirá más adelante en la sección de subprocesos múltiples.

Algunas especificaciones para singletons:

En circunstancias normales, cada singleton debe crear un método de clase para facilitar su llamada y uso. La convención de nomenclatura para los métodos es:

+ (tipo de instancia)shareClass;

+(tipo de instancia)clase predeterminada;

En la implementación del método, devuelve directamente [self new];

Bien, esta es la forma más sencilla de implementar un singleton. Después de dominar estas ideas básicas, piénselo, ¿qué problemas ocurrirán al usar un singleton con múltiples subprocesos?

Supongo que te gusta

Origin blog.csdn.net/JustinZYP/article/details/124204307
Recomendado
Clasificación