이 포스팅은 iOS BoostCourse 시리즈 23 편 중 12 번째 글 입니다.

  • Part 1 - 01: Asset, App thinning
  • Part 2 - 02: Foundation, UIKit
  • Part 3 - 03: Auto Layout
  • Part 4 - 04: View 체계
  • Part 5 - 05: 디자인 패턴
  • Part 6 - 06: MVC
  • Part 7 - 07: Apple Development Documents
  • Part 8 - 08: Human Interface Guidelines
  • Part 9 - 09: 화면 전환
  • Part 10 - 10: 뷰의 상태 변화 감지
  • Part 11 - 11: Delegation
  • Part 12 - This Post
  • Part 13 - 13: Target-Action
  • Part 14 - 14: Gesture Recognizer
  • Part 15 - 15: TableView
  • Part 16 - 16: Segue
  • Part 17 - 17: Json 다루기
  • Part 18 - 18: PhotoKit
  • Part 19 - 19: 동시성, 비동기, 병렬 프로그래밍
  • Part 20 - 20: OperationQueue
  • Part 21 - 21: SchrollView
  • Part 22 - 22: Naviagtion item, Bar button item
  • Part 23 - 23: CollectionView
▼ 목록 보기

Singleton

  • 특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체
  • 애플리케이션이 요청한 횟수와는 관계없이 이미 생성된 같은 인스턴스를 반환한다.
  • 딱 하나만 있기 때문에, 다른 인스턴스들이 공유해서 사용이 가능하다.

imagesingleton pattern

Cocoa 프레임 워크에서의 싱글턴 사용예

  • FileManager
    • 애플리케이션 파일 시스템을 관리하는 클래스
  • URLSession
    • URL 세션을 관리하는 클래스임
    • URLSession.shared
  • NotificationCenter
    • 등록된 알림의 정보를 사용할 수 있게 해주는 클래스
    • NotificationCenter.default
  • UserDefaults
    • Key-Value 형태로 간단한 데이터를 저장하고 관리할 수 있는 인터페이스를 제공
    • 데이터 베이스 클래스
  • UIApplication
    • iOS에서 실행되는 중앙제어 애플리케이션 객체
    • UIApplication.shared

주의할 점

  • 애플리케이션 내의 특정 클래스의 인스턴스가 하나만 존재
  • 즉, 여러개 만들 필요가 없는 경우에 사용
  • 환경 설정, 네트워크 연결 처리, 데이터 관리
  • 멀티 스레드 환경에서 동시에 싱글턴 객체를 참조할 경우 문제 발생 가능
  • 항상 장단점을 고려하여 활용한다.

Reference