본문 바로가기

iOS

[iOS] 디자인 패턴 | Singleton

싱글턴 (Singleton)

싱글턴은 특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체를 의미합니다.

싱글턴은 애플리케이션이 요청하는 횟수와는 관계없이, 이미 생성된 같은! 하나의! 인스턴스를 반환한다.

즉, 앱 내에서 특정 클래서의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있다. 

➡️ 앱 내에서 공용으로 사용되는 인스턴스

임의로 메모리에서 해제해주지 않는 이상 프로그램이 실행되고 끝날 때까지 메모리에 유지된다. 

 

class UserInfo {
    static let shared: UserInfo = UserInfo()
    
    var ID: String?
    var age: Int?
    
    private init() {
    
    }
}

static let : let 으로 상속을 금지하고 있으며, static 으로 공개되어 유일한 인스턴스에 접근하도록 할 수 있다. 

해당 클래스 이니셜라이저를 private 으로 설정하여 외부에서 또 다른 인스턴스를 생성하는 것을 막는다.

 

 

 

Cocoa Framework 에서의 싱글턴 디자인 패턴

Cocoa 에서 싱글턴을 활용하는 대표적인 클래스

싱글턴 인스턴스를 반환하는 팩토리 메소드나 프로퍼티는 일반적으로 shared 라는 이름을 사용한다.

  • FileManager : 애플리케이션 파일 시스템을 관리하는 클래스

    • FileManager.default

  • URLSession : URL 세션을 관리하는 클래스

    • URLSession.shared

  • NotificationCenter : 등록된 알림의 정보를 사용할 수 있게 해주는 클래스

    • NotificationCenter.default

  • UserDefaults : Key-Value 형태로 간단한 데이터를 저장하고 관리할 수 있는 인터페이스를 제공하는 데이터베이스 클래스

    • UserDefaults.standard

  • UIApplication : iOS에서 실행되는 중앙제어 애플리케이션 객체

    • UIApplication.shared

 

 

주의할 점

싱글턴은 애플리케이션 내의 특정 클래스의 인스턴스가 하나만 존재하기 때문에 객체가 불필요하게 여러 개 만들어질 필요가 없는 경우에 많이 사용한다. (ex. 환경설정, 네트워크 연결처리, 데이터 관리)

하지만 멀티 스레드 환경에서 동시에 싱글턴 객체를 참조할 경우 원치 않은 결과를 가져올 수 있다.

 

 

 

 

 

 

[NAROTi][iOS 개발] Singleton Pattern

Singleton Pattern에 대해 알아보자 싱글톤 패턴이란 특정용도로 객체를 하나 생성하여 공용으로 사용하고 싶을 때 사용하는 방법이다. 주로 환경설정, 로그인 정보 등을 특정용도로 생성해둔 객체��

velog.io

 

[LECTURE] 1) Singleton? : edwith

싱글턴 (Singleton) iOS 애플리케이션 디자인 패턴 중 하나인 싱글턴 패턴과 싱글턴 패턴을 사용할 때 주의해야 할 점에 대해 살펴봅니다. 학습 목표 1. 싱글턴 패턴에 대... - 부스트코스

www.edwith.org

'iOS' 카테고리의 다른 글

[iOS] UIVisualEffectView  (0) 2020.06.12
[iOS] 디자인 패턴 | Target - Action  (0) 2020.06.12
[iOS] UIActivityIndicatorView  (0) 2020.06.11
[iOS] 뷰의 재사용  (0) 2020.06.11
[iOS] 테이블 뷰 (TableView) - DataSource, Delegate  (0) 2020.06.10