jubilee

Programing, Books and more...

シングルトン(singleton)

シングルトンとは?

  • デザインパターンの1つ
  • 「ただ1つの」インスタンスしか持たない→どこからアクセスしても同じインスタンス
  • 複数のクラス間での変数やオブジェクトの共有が可能
  • 複数のクラス間でメソッドの共有ができる
  • NSUserdefaultsと同様

SingletonManager.h

1
2
3
4
5
6
7
8
9
10
11
@interface SingletonSample : NSObject
// このシングルトンが管理するプロパティ
@property(nonatomic) NSInteger managedParam;
@property(strong, nonatomic) NSString *catName;
...
// インスタンス作成のためのクラスメソッド
+ (SingletonSample *)sharedManager;

// このシングルトンが保有するメソッド
- (void)sampleMethod:(NSString*)name;
@end

SingletonManager.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@implementation SingletonManager

static id sharedManager_ = nil;
+ (id)sharedManager
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedData_ = [SingletonManager new];
    });
    return sharedManager_;
}

- (void)sampleMethod:(NSString*)name
{
    ...
}
@end

ViewController.m

1
2
3
4
5
6
7
8
#import "SingletonManager.h"

- (void)viewDidLoad
{
    SingletonManager *single = [SingletonManager sharedManager];
    single.managedParam = 100; // 変数に値をセット
    [single sampleMethod:name]; // メソッドを使用
}

参考:
http://ylb.jp/iOSDev/SingletonSample.pdf http://qiita.com/yuky_az/items/27031ec5ca55a95d6209