Swift)Singleton(싱글톤)

생성 패턴

Featured image

싱글톤 패턴이란?

프로젝트 내에 인스턴스가 단 1개인 객체입니다. 인스턴스가 여러개 존재할 때
문제가 발생하는 오디오나 카메라 등에 문제가 생기지 않게 구현하는 방법입니다.
단일 인스턴스를 생성하기 위해 일반적으로 지연로드를 사용합니다.
한 번 생성 후 종료 전까지 메모리에 상주하므로 필요한 경우에만 사용하는 것이 메모리 관리에 좋습니다.

ex) UIApplication, AppDelegate 등

구현조건

1.지정 초기화 메소드를 외부에서 참조하지 못하게 private로 선언합니다.
2.외부에서 초기화할 수 없으므로 내부에서 static 변수로 초기화합니다.

  class Singleton {
    static let shared = Singleton()
    private init() {}
  }


  @implementation Singleton

  + (id)shared {
    static Singleton *shared = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
      shared = [[Singleton alloc] init];
    });
  }