250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- uikit
- swift
- SwiftUI
- ios
- RxSwift
- 프로토콜
- 학과별커뮤니티
- 앱개발
- async
- 토이프로젝트
- 네트워크
- 기초문법
- 구름톤 유니브
- 실습
- 대표
- collectionview
- AppStore
- 협업
- WeatherKit
- 세종대학교
- 반응형
- 이론
- forEach
- 딕셔너리
- CS
- struct
- mvc
- MVVM
- 스트럭트
- 디자인 패턴
Archives
- Today
- Total
스윞한 개발자
SwiftUI의 Property Wrappers 본문
728x90
반응형
SMALL
SwiftUI에서 MVVM 패턴으로 앱을 개발하기 위해서는 다양한 프로퍼티 래퍼를 활용하는게 중요합니다!
여러 프로퍼티 래퍼들에 대해 알아보겠습니다 ㅎㅎ
SwiftUI의 Property Wrappers
1. @State
- SwiftUI에서 상태를 처리하는 방법
- 뷰의 상태를 저장하는 프로퍼티로 상태 관리 주체는 해당 뷰
- 기본적으로 Private 선언, 다른 뷰와 값을 소통하려면 Binding이용
- 값이 변경될 때마다 UI 업데이트
2. @Binding
- 뷰의 상태를 바인딩하는 방법
- 상위 @State 변수 전달받아 하위 뷰 캐치, 변화감지/연결
- Binding은 다른 뷰가 소유한 속성을 연결하기 때문에 소유권/저장공간 X
3. ObservableObject
- 클래스 프로토콜로 관찰하는 어떠한 값이 변경되면 변경사항을 알려줌
- 뷰에서 인스턴스 변화를 감시하기 위해 뷰모델 객체로 생성할 때 사용가능
4. @Published
- ObservableObject를 구현한 클래스 내에서 프로퍼티 선언 시 사용
- @Published로 선언된 프로퍼티를 뷰에서 관찰할 수 있음
- ObservableObject의 objectWillChange.send() 기능을 @Published 프로퍼티가 변경되면 자동으로 호출
5. @ObservedObject
- 뷰에서 ObservableObject 타입의 인스턴스 선언시 사용
- ObservableObect의 값이 업데이트되면 뷰를 업데이트
6. @StateObject
- 뷰에서 ObservableObject 타입의 인스턴스 선언시 사용
- 뷰 마다 하나의 인스턴스 생성, 사라지기 전까지 같은 인스턴스 유지
- @ObservedObject의 뷰 렌더링 시 인스턴스 초기화 이슈 해결을 위한 방법
- 매번 인스턴스가 새롭게 생성되는 것처럼 외부에서 주입 받는 경우가 아닌 최초 생성 선언시에 @StateObject 사용이 적절
7. @Environment
ex) colorScheme(dark mode, light mode)
- 미리 정의되어 있는 시스템 공유 데이터
- 사용하려는 공유 데이터의 이름을 keyPath로 전달하여 사용
- 시스템 공유 데이터는 가변하기에 var 선언
- 뷰가 생성되는 시점에 값이 자동으로 초기화
8. @EnviromentObject
- ObservableObject를 통해 구현된 타입의 인스턴스를 전역적으로 공유 사용
- 앱 전역에서 공통으로 사용할 데이터를 주입 및 사용
- 데이터 의존성의 문제가 발생할 수 있음(OverHead)
728x90
반응형
LIST
'Swift 이론' 카테고리의 다른 글
Swift - MVC to MVVM 개념정리/클린아키텍쳐(Swift UIkit Fundamental) (0) | 2024.02.06 |
---|---|
IOS - UICollectionView (4) | 2024.01.30 |
SwiftUI란? (0) | 2024.01.29 |
Swift 기초 문법 - 자료형 체크 (0) | 2024.01.29 |
Swift 기초 문법 - 프로토콜 조건 적용 (0) | 2024.01.29 |