どうもこんにちは。iOSをメインに開発しているロッキーカナイです。
私は元々Objective-Cを使ってiOSの開発をしていたのですが、Swiftに移行してみて、コードがスッキリ書けるなという印象を感じました。
以前紹介した記事でmapやfilter、reduceなどもスッキリコーディングでき感動を覚えたのですが、今回紹介する、シングルトンも簡単なのです。
シングルトンとはデザインパターンの1つで、クラスのインスタンスが1つしか生成されないことを保証します。つまりどこからアクセスしても同一のインスタンスになります。
メリットは複数のクラス間での変数やオブジェクトの共有ができる事、ViewControllerの機能の分離ができる事が挙げられます。
使い所としては、例えばシングルトンクラスに音量値の変数を持たせ、各ViewControllerで音量値を共有する方法などがあるかと思います。
同一のインスタンスを参照するので、最新の値になるというものになります。
1 2 3 4 5 |
class Singleton { static let shared = Singleton() private init() { } } |
init()をprivateにする事で外部からSingleton()で初期化できないようにします。
Singleton.shared.変数 という感じで使用します。
簡単!以上ォォ!!!!
終わりかと思わせつつ、、、Objective-Cも紹介します。
1 2 3 |
@interface Singleton : NSObject + (Singleton *)shared; @end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@implementation Singleton static Singleton *_shared = nil; + (Singleton *)shared{ if (!_shared) { _shared = [Singleton new]; } return _shared; } - (id)init { self = [super init]; if (self) { } return self; } |
ちょい長!!以上ォォ!!!!
ABOUT ME
