import SwiftUI
class Model: ObservableObject {
...
}
@main
struct HelloSwiftUIAppApp: App {
@StateObject private var model = Model()
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
DocumentGroup(newDocument: HelloSwiftUIAppDocument()) { file in
ContentView(document: file.$document)
.environmentObject(model)
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
...
}
main 함수
- 이 특성이 추가되어 있으면 컴파일러가 메인함수를 자동으로 합성
- 메인함수는 앱을 실행할 때 OS가 가장 먼저 실행
- 초기화 과정을 담당(플랫폼에 적합한 방식으로)
App 프로토콜
body 속성
App
프로토콜이 요구하는 속성
- Scene 프로토콜 채용한 scene 리턴
Scene
- 뷰 계층을 담고있는 컨테이너
- 플랫폼과 현재 앱의 상태에 따라 뷰 계층 표시 시점, 표시하는 방식을 자동으로 결정해서 처리
Document Group
- 기본적으로 제공되는 씬 중 하나
- 안에 하나의 뷰가 있고, 여기에 적혀있는 뷰가 첫번째로 표시
Application layer 레벨의 작업
- 시작 화면 리턴
- 모든 뷰가 공유하는 모델을 선언
- Application 레벨에서 인스턴스를 하나 만들고 공유 가능
- AppDelegate 구현
- PushNotification 구현 시 반드시 연결해야 함