ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Singleton
    iOS/App Develop 2019. 7. 25. 18:06

    안녕하세요 dely입니다:)

    오늘은 Singleton에 대해서 정리해보겠습니다.

     

    Singleton은 디자인패턴 중의 하나입니다.

    디자인패턴은 개발 구조적 설계 패턴이라고 표현할 수 있습니다.

    이 디자인패턴에는 Singleton 말고도

    팩토리 패턴, 옵저버 패턴, 데코레이터 패턴, 어댑터 패턴, 이터레이터 패턴, 델리게이트 패턴이 있습니다.

    이후에 하나씩 다뤄볼 수 있겠죠..??

     

    델리게이트 패턴의 경우에는

    2019/07/21 - [iOS/App Develop] - UIImagePickerViewController(photoLibrary)

    위의 글에서 ImagePicker를 사용하기 위해 쓰기도 했었습니다.

     

    다시 넘어와서.. 싱글톤(Singleton) 패턴은 단 하나의 클래스 인스턴스만 쓰기 위한 방법으로

    네트워크 작업에서 많이 쓰이게 됩니다.

     

    흔히 쓰이는 코드 구조는 다음과 같습니다.

    class SomeClass {
        static let shared: SomeClass = SomeClass()
    }

    클래스 내에서 자기자신을 static으로 선언 및 초기화 함으로써

    외부에서 shared에 접근하여 같은 인스턴스를 사용할 수 있게 됩니다.

     

    그런데 shared라는 것을 보니 유사한 것이 떠올랐습니다.

    UIApplication.shared

    https://developer.apple.com/documentation/uikit/uiapplication

     

    UIApplication - UIKit | Apple Developer Documentation

    Initialize your app’s data structures, prepare your app to run, and respond to any launch-time requests from the system.

    developer.apple.com

    애플 공식 문서를 참고해보면,

    'UIApplication은 앱이 시작될 때 시스템 호출로 UIApplicationMain(_:_:_:_:)을 부르게 되고,

    이 함수는 Singleton을 만들게 된다고 합니다.

    그리고 그 후에 shared를 통해 오브젝트에 접근할 수 있다고 합니다.

    그래서 모든 iOS 앱에는 정확하게 하나의 인스턴스가 있다고 하네요.'

     

    iOS 앱이 시작될 때도 기본적으로 싱글톤을 사용한다고 하니

    왠지 공식적으로 좋은 패턴으로 보입니다.(ㅎㅎ)

     

    현재 시점에서 저는 어떤 데이터들을 커스텀 클래스에 담아 가지고 있다가

    다른 페이지에서 그 데이터를 필요로 할 때 사용할 수 있도록 구현할 때 싱글톤을 사용했는데요.

    앞으로 프로젝트 크기가 커질 수록

    더욱 유용하게 사용할 수 있을 것 같습니다:)

    반응형

    'iOS > App Develop' 카테고리의 다른 글

    Navigation Controller  (0) 2019.07.23
    UIImagePickerViewController(photoLibrary)  (0) 2019.07.21
    Auto Layout  (0) 2019.07.19
    Create iOS Develop Category  (0) 2019.07.19

    댓글

Designed by Tistory.