inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기

@EnvironmentObject

MVVM에서 처음

해결된 질문

216

실눈개발자

작성한 질문수 4

0

import SwiftUI

@main
struct mountainApp: App {


    var body: some Scene {
        WindowGroup {
            AuthView()
                .environmentObject(AuthViewModel())
        }
    }
}

 

1번 경우에는 @StateObject 없이 바로 AuthViewModel 객체로 environmentObject에 넣어주면 문제가 발생하나요?

ios swift swiftui

답변 1

0

Jacob(제이콥)

안녕하세요 실눈개발자님.

먼저 답변하자면, @StateObejct 를 사용해서 초기화된 Viewmodel을 .environmentObject 에 넘겨줘야 합니다. 올려주신 코드로 작성해서 ViewModel 을 넘겨줘도 당장 Error 는 발생되지는 않지만 여러 View 와 연계되서 @EnviromentObject 로 ViewModel 과 Binding 시에 추후에 View 가 업데이트 되면서 데이터흐름상 충돌하게 되어 APP 에서 Error 가 발생됩니다. @StateObejct 를 사용하게 되면 생성된 객체(instance) 는 View 라이프사이클에 상관 없이, SwiftUI View 와 별개의 메모리 곤간에 저장해 데이터를 안전하게 보관하는 상태값을 Reference 해주는 역활을 하기때문에 나중에 충돌을 방지 할수 있습니다.

 

아래와 같이 프로젝트 진행하시면 될꺼 같습니다.

감사합니다

import SwiftUI

@main
struct mountainApp: App {
     
    @StateObject var vm: AuthViewModel = .init()
     
    var body: some Scene {
        WindowGroup {
            AuthView()
                .environmentObject(vm)
        }
    }
}

 

소리가 ㅠㅠ

0

53

2

index와 indexSet

0

59

2

NavigationBarItems Deprecated

0

96

3

Xcode version 문제

0

195

2

GalleryView 작성시, @State? @Bidnable? 의 차이점이 뭔지 궁금합니다.

0

303

2

페이지 이동에 관해 질문이 있습니다 !

0

339

2

scrollTransition 에서 phase 값을 찍어보고 싶습니다.

0

277

2

갤러리에서 슬라이더 변경시 gridSwitch 가 두번 실행됩니다.

0

307

2

유튜브 영상 플레이시 워닝 이슈 문의

0

518

1

ListBasic 강의 문의 - 딸기 id 오류 및 move 오작동

0

222

1

LazyGrid 강의 문의 - 데이터가 30개 인데 로우가 3줄이면 27개만 노출됨

0

269

1

ScrollView에서 질문 있습니다.

0

286

1

ExtractView, @Binding 강의에서 .previewLayout(.sizeThatFits) 함수 관련해서 질문드립니다.

0

336

2

iOS 15 버전이후 프리뷰 문제 관련해서 질문드립니다.

0

343

2

VStack으로 프리뷰 생성

0

393

2

MVVM 폴더 안에서 Preview가 작동하지 않습니다.

0

249

1

Preview 질문

0

415

2

LazyGrid 질문 있습니다.

0

337

1

Textfield 입력시 한글 자음 모음 분리 현상이 발생 합니다

1

6531

2

Sheet가 바로 닫히는 문제와 홈 화면 액션 관련 문의

0

288

1

NavigationView를 NavigationStack 으로 변경관련입니다.

1

357

1

Frame 강의에서 다른 결과물이 나와요

0

387

1

Frame에 대한 개념 질문

0

251

1

ShareLink에서 이미지 링크에서 이미지 크기 제한이 있나요?

0

317

2