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

関連記事

20141119-114354.jpg

【iOSアプリ開発】隙間時間で読んで学ぶのにオススメな入門本「はじめてのSwiftプログラミング」

「はじめてのSwiftプログラミング」という入門書が手頃なサイズで、持ち歩いてスキマ時間で読んで

記事を読む

I20160918-133158.jpg

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

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

記事を読む

I20151031-175009.jpg

初心者にオススメの本!Swiftではじめる iPhoneアプリ開発の教科書【Swift 2&Xcode 7対応】

     Xcode 7とSwift 2に対応したアプリ開発の入門書籍「Swiftでは

記事を読む

20141225-223049.jpg

【Xcode6】Auto Layoutで制約のFirst ItemとSecond Itemを逆にする方法

一度追加した制約のFirst ItemとSecond Itemを入れ替える方法について紹介します

記事を読む

I20160418-235604.jpg

XcodeのStoryboardで部品を選択しやすくする2つの方法

ストーリーボード上で部品が入り組んでくると選択しづらくなってきますが、そんな状況でも部品を選択し

記事を読む

I20150924-010943.jpg

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

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

記事を読む

I20151201-120520.jpg

【Swift 2】switch内にてguardでbreakする

Swift 2のguard内ではreturnしないと文法エラーとなりますが、実はswitch

記事を読む

20150116-114410.jpg

プログラミング未経験者がSwiftの文法を学ぶのにオススメな本!「たのしいSwiftプログラミング」

楽しみにしていたSwiftの入門書「たのしいSwiftプログラミング」を読み終わったので、レビュ

記事を読む

エディタのショートカット・Auto Layout・ブレークポイントに関する詳しい解説も!「Xcode5徹底解説」

著者の@es_kumagaiさんより献本御礼。iOSアプリ開発に用いるツール「Xcode 5」の

記事を読む

I20150805-182005.jpg

Swiftにおける関数型のエッセンスを学ぶために「関数プログラミング実践入門」を読み始めた

Swiftの関数型言語的な特徴についての話を各所で見るようになりましたが、自分は関数型言語の

記事を読む

I20170228-002742.jpg
約3ヶ月で体脂肪率を6.2%も落とせたキッカケについて

(右上の赤枠内がダイエット開始前、左下の赤枠内が3ヶ月後の数値

I20161224-174949.jpg
「季節の野菜を直接配送!季節のスムージー」を買ってみた

「FiNCモール」で、「季節の野菜を直接配送!季節のスムージー」を

I20161002-152537.jpg
【メンズネイル】東京・新宿のネイルサロンでマットネイルしてもらった

2016年7月18日、東京・新宿のメンズOKなネイルサロン「Tot

I20160925-163452.jpg
タブバーアイコン非選択時の色を変更する方法【iOS 10】

UITabBarControllerで、タブバーアイコン非選択時の

I20160924-123726.jpg
iPad Pro 9.7インチ SIMフリーモデルにFREETELのSIMを入れて使ってみた

今までiPad miniで使っていたFREETELのSIM

→もっと見る

PAGE TOP ↑