タグ

Singletonに関するmfks17のブックマーク (2)

  • Swiftでシングルトンパターンを実装する3つの方法 - Qiita

    Swiftでシングルトンパターンを実装する方法はいくつかあるのでまとめました。 遅延初期化(lazy initialization)とスレッドセーフ(thread safety)を考慮された実装です。 遅延初期化はシングルトンのインスタンスを利用開始するまで当該インスタンスを生成しないことです。 スレッドセーフは複数のスレッドで同時にインスタンスの生成を試みても、誤って複数のインスタンスを生成しないことです。 この実装は以下のバージョンで確認しています。 Xcode6 Beta3 structのstatic定数で定義 (推奨) static定数に初期化したインスタンスを保持する実装です。ただSwiftのclassはstatic定数を利用できないので、structでネストしてstatic定数を保持しています。現状この実装方法が一番良いと言われています。 class Singleton { c

    Swiftでシングルトンパターンを実装する3つの方法 - Qiita
  • 【コラム】ダイナミックObjective-C (51) デザインパターンをObjective-Cで - Singleton (2) | エンタープライズ | マイナビニュース

    Singletonパターンの話を続けよう。前回の最後で、Cocoaフレームワークに見られるSingletonの話をすると書いたが、前回の記事について読者から指摘をもらったり、書き漏らしたトピックがあったので、もう一回Singletonの実装の話をすることにする。 スレッドの排他制御 まずは、Singletonのインスタンスを取得するメソッドを、複数スレッドから呼ばれたときに排他制御することについて。 前回、「Objective-Cではスレッド同期のための文法は提供されていない」と書いてしまったが、これは誤りだ。昔のObjective-Cにはなかったが、現在では@synchronizedというキーワードが追加されている。これを使うと、ランタイムレベルでの排他制御を行うことができる。GCC 3.3以降、Mac OS Xだと10.3以降から使用可能だ。 この文法に関する詳しい説明は、「Objec

  • 1