← 메인으로

싱글톤 인스턴스 패턴

[[0822 focusgo 분석하기]]에서 나온 첫 질문.

@StateObject private var studySession = StudySession.shared 

싱글톤 패턴이란?

왜 쓰는가?

  1. 전역 상태 공유: 앱에서 "공부 시간"이라는 데이터를 메뉴바, 메인 화면, 알림 등 여러 뷰에서 동시에 사용해야 한다면, 각각 새로운 인스턴스를 만들면 데이터가 따로 논다. 하지만 싱글톤으로 만들면 어느 뷰에서 바꿔도 앱 전체가 같은 값을 본다.
  2. 메모리 낭비 방지: 딱 하나만 만들고 계속 쓰니까 불필요하게 여러 개 만들 필요가 없다.
  3. 접근 편의성: StudySession.shared 이렇게 어디서든 접근 가능
class StudySession: ObservableObject { static let shared = StudySession() // 싱글톤 인스턴스 만들기 @Published var hideIcon: Bool = false @Published var customText: String = "" @Published var currentSubject: String? @Published var currentSessionTime: String = "0m" private init() { } // 외부에서 new 못하게 막음 } 

지금 코드에서의 의미