Objective-C Language Singleton Class


Esempio

Cos'è una classe Singleton?

Una classe singleton restituisce la stessa istanza indipendentemente dal numero di richieste da parte di un'applicazione. A differenza di una normale classe, un oggetto Singleton fornisce un punto globale di accesso alle risorse della sua classe.

Quando utilizzare le lezioni Singleton?

I single vengono utilizzati in situazioni in cui è desiderabile questo singolo punto di controllo, ad esempio con classi che offrono servizi o risorse generali.

Come creare classi Singleton

Per prima cosa, crea un nuovo file e sottoclassilo da NSObject . CommonClass nome, useremo CommonClass qui. Xcode genererà ora i file CommonClass.h e CommonClass.m per te.

Nel tuo file CommonClass.h :

#import <Foundation/Foundation.h>

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

Nel tuo file 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

Come usare Classi Singleton

La classe Singleton creata in precedenza sarà accessibile da qualsiasi punto del progetto, a condizione che il file CommonClass.h sia stato importato nel modulo pertinente. Per modificare e accedere ai dati condivisi nella classe Singleton, è necessario accedere all'oggetto condiviso di quella classe a cui è possibile accedere utilizzando il metodo sharedObject come segue:

[CommonClass sharedObject]

Per leggere o modificare gli elementi in Shared Class, effettuare le seguenti operazioni:

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