シングルトンとは?
- デザインパターンの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