← 메인으로

0822 focusgo 분석하기

직접 만든 이 앱의 전체적인 흐름을 스스로 설명할 수 있게 된다면, 더 큰 도움이 될 것이라 생각한다.

앱 시작점과 전체 흐름

  1. 앱 진입점: studygoApp.swift
@main struct studyGoApp: App { var body: some Scene { MenubarExtra { StudyMenuView() // 팝오버 메뉴 내용 } label: { MenuBarTimerView() // 메뉴바에 표시될 아이템 } .menuBarExtraStyle(.window) } } 
  1. 메뉴바 표시: MenuBarTimerView.swift
struct MenuBarTimerView: View { @StateObject private var studySession = StudySession.shared // 싱글톤 인스턴스 @State private var currentTime = Date() // 지금 시간 let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() // 오 이거 완전 생소한데? var body: some View { HStack(spacing: 6) { // 1. 아이콘 표시(설정에 따라 숨길 수 있게) if !studySession.hideIcon { // hideIcon이 아니면 Image(systemName: "book.fill") .foregroundColor(.blue) .font(.caption) } // 2. 커스텀 텍스트 + 시간 표시 if !studySession.customText.isEmpty { // 내용 有 if let currentSubject = studySession.currentSubject { Text("\(studySession.customText) \(studySession.currentSessionTime)") } else { Text("\(studySession.customText) 0m") } } else { // 커스텀 텍스트가 없으면: 시간만 표시 if let currentSubject = studySession.currentSubject } } } } 

[[싱글톤 인스턴스 패턴]]