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コード)

関連記事

20160420-180135.jpg

【RxSwift】2つのUITextFieldに入力された数値の合計をUILabelに表示する

そろそろRxSwiftについて学び始めよう!ということで、まずは2つのUITex

記事を読む

I20150924-010943.jpg

Swift 2.0で追加されたOptionSetTypeがなかなか便利

Swift 2.0で追加されたOptionSetTypeプロトコルがなかなか便利なので紹介し

記事を読む

I20160918-133158.jpg

StoryboardでChild View Controllerにデータを渡す方法(Xcode 8 & Swift 3)

Storyboardで、Child View Controllerにデータを渡す方法を紹介します

記事を読む

I20150720-150147.jpg

Apple Watchアプリを作りたいならこの書籍!「詳細!Apple Watch アプリ開発 入門ノート」

     Apple Watchアプリの作り方を学ぶのにオススメな書籍、「詳細!Apple W

記事を読む

I20150714-010114.jpg

【Swift】Objective-Cで書いたクラスをメソッド単位で少しずつSwiftへ移行する方法

Objective-Cで作った既存のアプリをSwiftで書き直したいと思っているのですが、一

記事を読む

20140905-180905.jpg

英語苦手な人がSwiftを学びたいならこの本を読むといいよ!

アップルのWWDC2014で発表された、iOSおよびOS Xのためのプログラミング言語「Swift」

記事を読む

20160802-232454.jpg

【Xcode 7】メソッドがどこから呼びだされているかを調べる方法

Xcode 7で、メソッドがどこから呼び出されているのか調べる方法を紹介します!     方法

記事を読む

I20160129-115948.jpg

【対処法】Swift 2(iOS 9)ではUITextFieldのtextがString?になっている

Swift 1(iOS 8)時代において、UITextFieldのtextプロパティは va

記事を読む

I20160122-095132.jpg

Swift 2のドキュメントコメントの書き方(JavaDoc的なやつ)

コード補完時やoptionクリック時などに説明が出てくるようにする「ドキュメントコメント(J

記事を読む

20150104-120413.jpg

【おすすめ本】Swiftではじめる iPhoneアプリ開発の教科書【iOS 8&Xcode 6対応】

     入門者にオススメな、Swift&Xcode 6の入門書「Swiftではじめる

記事を読む

I20170521-225453.jpg
東京駅八重洲口の「羊肉酒場 悟大」で網焼きジンギスカンを頂きました!

ゆうせいさんと株式会社 大庄さんからご招待頂き、悟大withサッポ

I20170514-165235.jpg
iPhoneと連携できる体重体組成計「Withings Body Cardio」を使ってます

ジムに通い始めて体脂肪率が落ち始めたのをキッカケに、iPhoneと

I20170507-155440.jpg
【派手髪】ハーレイクイン風の髪色に染めてもらいました

2016年10月20日、ハーレイクイン風の髪色に染めてもらいました

I20170504-173110.jpg
【メンズネイル】東京・新宿のネイルサロンでターコイズのホログラムネイルしてもらった

ネイルネタが1年分くらい溜まっているので、ちょっとずつ書いていこう

I20170502-010117.jpg
SNUGGのライトニングケーブルが耐久性高し。8ヶ月使ってますが断線の気配なし!

iPhoneの充電&転送ケーブルであるLightningケーブルっ

→もっと見る

PAGE TOP ↑