SwiftUI9 @StateObject vs @ObservedObject View와 Logic을 분리하기 위해 MVVM (Model - View - ViewModel) 패턴을 사용하는데ViewModel은 Logic을 담당하여 View에서 사용할 데이터를 가공하는 역할을 한다. SwiftUI에서는 ViewModel을 클래스로 구현하고 ObservableObject 프로토콜을 채택한다. 내부에는 View에서 사용할 데이터가 있어 @Published 프로퍼티로 해당 값의 변화를 알리게 되고메서드로 데이터를 가공할 수 있도록 한다. class MyViewModel: ObservableObject { @Published var myData: [MyModel] = [] func insert(data: MyModel) { myData.append(data) } fu.. 2024. 5. 13. [ChatGPT 검색] LazyVStack을 만들 때 뷰가 몇개까지 미리 만들어지는지 알아? SwiftUI에서 LazyVStack 안에 50개의 RoundedRectangle 뷰를 생성하여 스크롤 가능하게 하고 뷰가 보일(appear) 때마다 count 수를 증가시켰다. LazyVStack은 화면에 보이는 개수만큼 뷰를 생성하여 재사용한다고 알고 있었는데 강의 영상에서는 실제 뷰가 보이는 3개의 개수만큼 카운팅이 올라가지만 내가 한 예제에서는 처음부터 6개가 생성되었다. 그리고 onDisappear에서 count 수를 줄이게 만들었더니 10 - 11 정도로 count 값이 유지되었다. 그래서 궁금해서 다시 찾아봤당. Q.50개의 아이템을 가진 LazyVStack을 만들 때 뷰가 몇 개까지 미리 만들어지는지 알아?LazyVStack은 스크롤 가능한 세로 스택을 생성할 때 화면에 한 번에 표시되.. 2024. 5. 12. LazyVGrid Scrollable LazyVGrid with Section Lazy가 붙으면 화면에 표시되는 부분에 한해 메모리를 로드하고 재사용한다.즉 데이터가 많은 경우 이를 한 번에 로드하여 보여주려면 로드하는데 시간이 걸리고 성능이 저하될 수 있으나LazyGrid 나 LazyStack같은 것을 사용하면 실제 화면에 보여주는 부분만 메모리를 로드하고 재사용하기 때문에 효율이 좋다. 이 글을 쓰는 이유는 LazyVGrid 안에서 Section을 사용하여 화면 스크롤 시 Section의 Header가 고정되어 상단에 계속 노출시키는 방법을 알게 되었기 때문이다. struct GridBootcamp: View { let columns: [GridItem] = [ GridItem(.flexibl.. 2024. 5. 3. SwiftUI 를 공부하면서 구직 중 기업에서 원하는 자격요건을 맞추기 위해 MVVM 패턴을 공부하면서 SwiftUI 공부를 시작했다. youtube에서 엄청 엄청 유용한 강의들을 보게 되었고 이제야 조금 감을 잡기 시작했다. 일단 나는 회사 프로젝트에서 MVVM 패턴을 적용했었는가? 그런줄 알았다. DataBinding, RxJava, RxSwift 등 Observable을 사용하면 MVVM 패턴을 적용한 줄 알았다. 오히려 Observable을 사용하지 않아도 Observer 패턴을 이용하여 MVVM 패턴을 적용할 수 있었다. 즉 MVVM 패턴 자체에 RxJava나 RxSwift는 필수가 아니라는 것이다. 다만 라이브러리를 사용하면 더 쉽고 간편하게 사용할 수 있다는 것이다. 우선 모델을 아래와 같이 3개로 나누었는데 각 모델에.. 2023. 11. 30. 이전 1 2 3 다음