Develop
2018.10.31 09:06

[ios] Swift 4 Singleton inheritance

Views 1588 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

Swift 4 에서 싱글톤 객체를 사용하는 방법은 여러 가지가 있겠지만 이건 내가 자주 사용하는 두 가지..


# 변수 형태로 사용하기

ex) Singleton.shared.name = "Hello"

클래스를 상속 받아서 확장하기 어려움 ㅠㅠ


import UIKit


class Singleton

{

    static let shared: Singleton = {

        var instance = Singleton()

        instance.name = "default name"

        return instance

    }()

    

    var name: String = String()

}


class SingletonSubclass: Singleton {

    static var sharedSub: SingletonSubclass = {

        var instance = SingletonSubclass()

        instance.name = "default name"

        return instance

    }()

    

    var title: String = String()

}


Singleton.shared.name          // ""

SingletonSubclass.shared.name  // ""


SingletonSubclass.shared.name = "haha"

SingletonSubclass.sharedSub.title = "hello"


Singleton.shared.name             // ""

//Singleton.shared.title          // (error)

SingletonSubclass.shared.name     // "haha"

SingletonSubclass.sharedSub.title // "hello"




# 함수 형태로 사용하기

ex) Singleton.sharedInstance().name = "Hello"

클래스를 상속 받아 확장하기 편함

Sometimes you need to subclass your singleton…


import UIKit


class Singleton

{

    class func sharedInstance() -> Singleton {

        struct inner { static let instance = Singleton() }

        inner.instance

        return inner.instance

    }

    

    var name: String = String()

}


class SingletonSubclass: Singleton

{

    override class func sharedInstance() -> SingletonSubclass {

        struct inner { static let instance = SingletonSubclass() }

        return inner.instance

    }

    

    var title: String = String()

}


Singleton.sharedInstance().name          // ""

SingletonSubclass.sharedInstance().name  // ""


SingletonSubclass.sharedInstance().name = "haha"

SingletonSubclass.sharedInstance().title = "hello"


Singleton.sharedInstance().name          // ""

//Singleton.sharedInstance().title       // (error)

SingletonSubclass.sharedInstance().name  // "haha"

SingletonSubclass.sharedInstance().title // "hello"


?

List of Articles
No. Category Subject Author Date Views
825 Develop SVN 초간단 사용하기 hooni 2014.02.28 7616
824 Develop URI 인코딩, URL 인코딩 file hooni 2013.04.23 18845
823 Develop What is difference between Get, Post, Put and Delete? hooni 2018.02.28 1398
822 Develop XE Core 1.8.18 본문 작성시 태그(html) 사라지는 버그 file hooni 2016.04.21 862
821 Develop XML, JSON, BSON, MSGPACK 장,단점 비교 file hooni 2017.01.11 2237
820 Develop ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 file hooni 2015.01.01 1628
819 Develop [ajax] 샘플 코드와 한글처리에 대한 간단한 설명 hooni 2013.04.23 6842
818 Develop [ajax] 이벤트 코드 생성기 작업중.. ㅋㅋ file hooni 2013.04.23 7116
817 Develop [Android Error] The number of method references in a .dex file cannot exceed 64K hooni 2016.11.10 752
816 Develop [Android] 2010년에 만들었던 세미나 자료. file hooni 2013.05.28 64661
815 Develop [android] AlertDialog 메시지 창 띄우기 hooni 2015.07.09 849
814 Develop [android] Android N requires the IDE to be running with Java 1.8 or later 오류 hooni 2016.08.30 682
813 Develop [android] ArrayAdapter 테스트 파일 ㅎㅎ hooni 2013.04.23 45239
812 Develop [android] ArrayAdapter를 이용하여 출력하기 hooni 2013.04.23 47337
811 Develop [android] Calling activity function from separate class hooni 2016.11.15 1153
810 Develop [android] Canvas를 이용해 이미지 확대/축소 하기 hooni 2013.04.23 60739
Board Pagination Prev 1 2 3 4 5 ... 53 Next
/ 53