일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SWIFT
- 리펙토링
- Human interface guide
- RxCocoa
- MVVM
- 스위프트
- ribs
- Observable
- ios
- uitableview
- 리펙터링
- Protocol
- collectionview
- combine
- tableView
- 애니메이션
- UITextView
- rxswift
- 클린 코드
- swift documentation
- swiftUI
- Clean Code
- UICollectionView
- HIG
- uiscrollview
- clean architecture
- Refactoring
- 리팩토링
- map
- Xcode
- Today
- Total
목록@ObservedObject (7)
김종권의 iOS 앱 개발 알아가기
뷰 상태 관리상태가 변경되면 뷰가 업데이트 되는데 상태를 관리하는 방법은 크게 3가지ObservableObject 모델을 아래 3가지로 참고@StateObject (혹은@State), @ObservedObject, @EnvironmentObject)class Person: ObservableObject { @Published var name: String init(name: String) { self.name = name print("init > Person Model") }}struct Subview: View { @StateObject var personByState = Person(name: "jake") @ObservedObject var..
@StateObject, @EnvionrmentObject, @ObservedObject 구분모두 ObservableObject 타입의 모델을 프로퍼티로 선언할 때 사용class MyObject: ObservableObject { @Published var age = 0}struct ContentView: View { @StateObject var object1 = MyObject() @ObservedObject var object2 = MyObject() @EnvironmentObject var object3: MyObject var body: some View { }} 차이점?@StateObject: 이 프로퍼티는 오직 이것을 선언한 뷰 라이프 사이클에서만 관..
@StateObject와 @ObservedObject 개념@StateObject와 @ObservedObject 모두 ObservableObject 모델을 옵저빙할 때 사용class MyViewModel: ObservableObject { @Published var count = 0}@StateObject var viewModel = MyViewModel()@ObservedObject var viewModel = MyViewModel()차이점?@ObservedObject 기능: 뷰가 다시 그려질 때, 뷰 내부에 @ObservedObject 모델을 두면 초기화됨@StateObject 기능: 뷰가 다시 그려질 때, 뷰 내부에 @StateObject 모델을 두어도 데이터가 유지됨뷰 상태관리 방법뷰를 사용..
@ObservedObject 사용 요건ObservableObject 모델을 사용할 때 아래 에러를 마주치는 경우가 존재바로 @ObservedObject를 선언한 프로퍼티는 프로토콜이 아닌 구체적인 타입을 사용해야함struct ContentView: View { // error: Type 'any Personable' cannot conform to 'ObservableObject' @ObservedObject var person: Personable var body: some View { HStack { } }}protocol Personable where Self: ObservableObject { var name: String { get }..
ObservableObjec, @Published, objectWillChanged 개념ObservableObject는 옵저빙 될 수 있는 모델을 의미옵저빙 된다는 의미는 값이 변경되었을때, 이 모델을 옵저빙하고 있는 대상에게 알림을 주는 것변경된다는 기준은 @Publihsed 키워드로 선언된 프로퍼티가 변경되었을때 알림을 줌@Published를 사용하면 objectWillChanged라는 내부 프로퍼티에 send()를 날리는 것과 동일class User: ObservableObject { let name = "name" /// @Published: 변경되었다는 기준이 될 property에 선언 @Published var score = 0 /* objectWil..
목차) SwiftUI의 기본 - 목차 링크 * @Published, @objecervableObject 개념은 Combine이므로, Combine 관련 이전 포스팅 글 참고 @ObservedObejct 란? observable 객체를 구독하는 property wrapper observable 객체가 변경되면 뷰에 업데이트 시켜주는 기능 내부 코드 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper @frozen public struct ObservedObject : DynamicProperty where ObjectType : ObservableObject { @dynamicMemberLookup @frozen pub..
@State View를 상속받는 뷰에서, 값을 변경할때 사용하는 프로퍼티 어노테이션 @State var n = 0 내부 구현부는 propertyWrapper를 사용한 형태 ex) @State를 붙이지 않은 경우 컴파일 에러 발생 struct ContentView: View { var n = 0 var body: some View { VStack { Text("\(n)") Button("Tap!!") { n += 1 // Error: Left side of mutating operator isn't mutable: 'self' is immutable } } } } ex) @State를 프로퍼티 앞에 붙일 경우 컴파일 에러 해결 struct ContentView: View { @State var n = 0 //