Swift 2でシングルトンを初期化・呼び出しする方法

公開日: : 最終更新日:2016/02/10 iPhoneアプリ開発

20160118-223109.jpg

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'” というエラーが出ます。

20160118-221231.jpg

    

(2) 唯一のイニシャライザをprivateにする

(2)では、唯一のイニシャライザをprivateにします。これによってイニシャライザを使って外部からこのクラスのインスタンスを作ることができなくなります。

外部からイニシャライザを使ってインスタンスを作ろうとすると、”‘Singleton’ cannot be constructed because it has no accessible initializers” というエラーが出ます。

20160118-222152.jpg

    

(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の文法について学ぶには、以下の本がオススメです!

関連記事

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

PAGE TOP ↑