Objective-C Language Classe Singleton


Exemple

Qu'est-ce qu'une classe Singleton?

Une classe singleton renvoie la même instance, quel que soit le nombre de fois qu'une application le demande. Contrairement à une classe régulière, un objet singleton fournit un point d'accès global aux ressources de sa classe.

Quand utiliser les classes Singleton?

Les singletons sont utilisés dans des situations où ce point de contrôle unique est souhaitable, par exemple avec des classes offrant des services généraux ou des ressources.

Comment créer des classes Singleton

Tout d'abord, créez un nouveau fichier et sous-classez-le à partir de NSObject . Nommez-le, nous utiliserons CommonClass ici. Xcode va maintenant générer des fichiers CommonClass.h et CommonClass.m pour vous.

Dans votre fichier CommonClass.h :

#import <Foundation/Foundation.h>

@interface CommonClass : NSObject {
}
+ (CommonClass *)sharedObject;
@property NSString *commonString;
@end

Dans votre fichier CommonClass.m :

#import "CommonClass.h"

@implementation CommonClass

+ (CommonClass *)sharedObject {
    static CommonClass *sharedClass = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedClass = [[self alloc] init];
    });
    return sharedClass;
}

- (id)init {
    if (self = [super init]) {
        self.commonString = @"this is string";
    }
    return self;
}

@end

Comment utiliser les classes Singleton

La classe Singleton que nous avons créée précédemment sera accessible de n'importe où dans le projet tant que vous avez importé le fichier CommonClass.h dans le module concerné. Pour modifier et accéder aux données partagées dans la classe Singleton, vous devrez accéder à l'objet partagé de cette classe accessible à l'aide de la méthode sharedObject , comme suit:

[CommonClass sharedObject]

Pour lire ou modifier les éléments de la classe partagée, procédez comme suit:

NSString *commonString = [[CommonClass sharedObject].commonString; //Read the string in singleton class

NSString *newString = @"New String";
[CommonClass sharedObject].commonString = newString;//Modified the string in singleton class