Swift 2でシングルトンを初期化・呼び出しする方法
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
Swift 2でシングルトンを実装する方法について解説したいと思います!
(※「シングルトンを呼び出す」という言葉遣いには個人的に違和感を感じましたが、このキーワードで検索して調べる人がいるようなのでこのような記事タイトルとしてあります。)
「シングルトン」とは?
シングルトンとは、そのクラスのインスタンスが1つしか無いことを保証するための設計パターンです。
詳しくはこちらのページなどを見てもらえればと思います。 ⇒ Singleton パターン – Wikipedia
シングルトンなクラスを作る
シングルトンなクラスを作るには、以下の様にコードを書きます。
// (1) 継承を禁止 final class Singleton { // (2) イニシャライザをprivateにする private init() { } // (3) 唯一のインスタンスをstaticとして用意 static let sharedSingleton = Singleton() }
(1) 継承を禁止する
(1)では、クラスにfinal指定を行うことによって継承を禁止します。
Singletonから継承しようとすると “Inheritance from a final class ‘Singleton'” というエラーが出ます。
(2) 唯一のイニシャライザをprivateにする
(2)では、唯一のイニシャライザをprivateにします。これによってイニシャライザを使って外部からこのクラスのインスタンスを作ることができなくなります。
外部からイニシャライザを使ってインスタンスを作ろうとすると、”‘Singleton’ cannot be constructed because it has no accessible initializers” というエラーが出ます。
(3) 唯一のインスタンスをstaticとして用意
(3)では、Singletonクラスの唯一のインスタンスをstaticとして用意します。これによってイニシャライザを使って外部からインスタンスを作成しなくても、唯一のインスタンスにアクセスできるようになります。
シングルトンなクラスのインスタンスにアクセスする方法
シングルトンなクラスのインスタンスにアクセスするには、以下のようにします。
Singleton.sharedSingleton
例えばSingletonクラスにnumというプロパティを用意した場合、
final class Singleton { private init() { } static let sharedSingleton = Singleton() var num : Int = 0 }
これにアクセスするには以下のようにします。
Singleton.sharedSingleton.num = 123
@akio0911はこう思った。
他に良い実装方法があれば、ぜひ教えて下さい!
Swift 2の文法について学ぶには、以下の本がオススメです!
関連記事
この記事が気に入ったら「いいね!」しよう
Twitterで更新情報をゲット!