LoginSignup
134

More than 5 years have passed since last update.

Swift で簡単なシングルトンの実装方法

Last updated at Posted at 2015-12-26

Swift で マネージャー系のコードを書く時にはシングルトンの実装を迫られる場合があります。インスタンスとしていくつも存在されても困る場合があるからです。そんな時に便利な二つのイディオムを紹介します。

通常のシングルトン

class Manager {
    static let sharedManager = Manager()
    private init() {
    }
}
  • static let の構文
  • initprivate にする
  • 初期化がインスタンスの生成がシンプルな場合に便利

クロージャーを使ったシングルトン

class Manager {
    static var sharedManager: Manager = {
        return Manager()
    }()
    private init() {
    }
}
  • static var の構文
  • initprivate にする
  • インスタンスはクーロージャ内 { } で生成して、return 文で戻す
  • クロージャーの最後の () を忘れないで
  • インスタンスの生成の為に、ファイルやリソースを用意したりなど、いくつかステップを踏む必要がある場合に便利

(EDIT: 表現を変更しました)

どちらでも、シングルトンのオブジェクトを生成します

var manager1 = Manager.sharedManager
var manager2 = Manager.sharedManager
manager1 === manager2 // true

initprivate が付いているので、基本的には直接生成はできません。ただし、同じソースファイルから呼び出す場合はその限りではありません。Playground で試す場合は要注意ですね。


【参考情報】
Swiftでシングルトンパターンを実装する3つの方法
http://qiita.com/susieyy/items/acb3bc80a1dafe64cffd

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
134