Objective-C でシングルトンクラスを作成する : Objective-C プログラミング

PROGRAM


Objective-C でシングルトンクラスを作成する

シングルトンというのは、クラスのインスタンスが 1 つだけに絞ることで、アプリケーション内で機能全体を統一化することができます。

UIApplication の sharedApplication メソッドや、NSUserDefaults の standardUserDefaults メソッドも、このシングルトンの仕組みを利用しています。

 

この、シングルトンクラスを作成するためには、初回にインスタンスを生成したらそれをどこかに保持して、2 回目以降は既に生成されているインスタンスを返すというようなプログラミングをする必要があります。

Objective-C では、それを手助けする dispatch_once という関数が用意されているため、簡単に実装することができます。

@implementation EzSampleClass

 

// シングルトンのインスタンスを保存しておく変数です。

static EzSampleClass* _sharedInstance = nil;

 

+ (EzSampleClass*)sharedInstance

{

// 唯一の実行であるかを管理する構造体を関数内に static で用意します。

static dispatch_once_t onceToken;

 

// 第二引数で指定したブロックを 1 回だけ実行します。

dispatch_once(&onceToken, ^{

_sharedInstance = [[EzTestDictionary alloc] init];

});

 

// 唯一のインスタンスを返します。

return _sharedInstance;

}

このようにすることで、最初の 1 回だけはインスタンスを生成して、それ以降は既に生成したインスタンスを返す sharedInstance メソッドを作成できました。

後は、アプリ内のどこでも、この sharedInstance メソッドを実行するだけで、共通の(ここでは EzSampleClass クラスの)インスタンスを取得することができるようになりました。

[ もどる ]