Article

Managing a Shared Resource Using a Singleton 共有されるリソースをシングルトンを使って管理する

Provide access to a shared resource using a single, shared class instance. 共有リソースへのアクセスを単一の、共有クラスインスタンスを使って提供します。

Overview 概要

You use singletons to provide a globally accessible, shared instance of a class. You can create your own singletons as a way to provide a unified access point to a resource or service that’s shared across an app, like an audio channel to play sound effects or a network manager to make HTTP requests. あなたはシングルトンを使って、グローバルにアクセス可能な、あるクラスの共有インスタンスを提供します。あなたは、サウンドエフェクトを再生するオーディオチャンネルやHTTPリクエストを行うネットワークマネージャのような、あるアプリ全体で共有されるリソースやサービスへの一本化されたアクセスポイントを提供する方法として、あなた自身のシングルトンを作成します。

Create a Singleton シングルトンの作成

You create simple singletons using a static type property, which is guaranteed to be lazily initialized only once, even when accessed across multiple threads simultaneously: あなたは単純なシングルトンをstatic型プロパティを使って作成できます、それはただ一度だけ遅延初期化されることを保証されます、たとえ複数のスレッドから同時にアクセスされる場合でさえもです:


class Singleton {
    static let shared = Singleton()
}

If you need to perform additional setup beyond initialization, you can assign the result of the invocation of a closure to the global constant: あなたが追加的な準備を初期化が済んだら実行する必要があるならば、あなたはあるクロージャの発動の結果をグローバル定数に割り当てることができます:


class Singleton {
    static let shared: Singleton = {
        let instance = Singleton()
        // setup code
        return instance
    }()
}

See Also 参照

Common Patterns 共通パターン