본문 바로가기

Category/iOS25

@StateObject와 @ObservedObject의 상태 관리 방식 차이 로그인 화면과 상태 관리를 다루는 SwiftUI 예제를 통해 차이점을 알아봅시다.import SwiftUIclass LoginViewModel: ObservableObject { @Published var email = "" @Published var password = "" @Published var isUserLoggedIn = false var isValidEmail: Bool { isValid(regex: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}") } func login() { isUserLoggedIn = isValidEmail } private func i.. 2024. 9. 21.
ObservableObject와 @StateObject, @ObservedObject란? SwiftUI에서 상태 관리와 데이터 공유를 위해 사용하는 주요 도구들 중 하나가 ObservableObject와 그 관련 속성 래퍼들인 @StateObject, @ObservedObject 입니다. 이들은 여러 뷰 간에 상태를 관찰하고 변경을 자동으로 반영할 수 있도록 도와줍니다.1. ObservableObjectObservableObject는 SwiftUI에서 상태를 관리하고 뷰 간에 공유하기 위해 사용하는 클래스입니다. @State와 같은 단순한 값이 아닌, 더 복잡한 데이터와 로직을 관리할 때 주로 사용됩니다.특징:클래스 기반: ObservableObject는 클래스에서만 사용할 수 있습니다.객체가 변경될 때 알림: ObservableObject는 객체의 상태가 변경될 때 SwiftUI에 그 변화.. 2024. 9. 21.
SwiftUI의 @Binding이란? @Binding은 SwiftUI에서 뷰 간에 상태를 공유할 때 사용하는 속성 래퍼입니다. SwiftUI에서 상태를 관리할 때, 기본적으로는 @State를 사용하여 해당 뷰 내에서 상태를 관리하지만, 다른 뷰에서도 그 상태를 읽거나 수정할 수 있게 하려면 @Binding을 사용해야 합니다.기본 개념@State: 뷰 내부에서만 사용되는 상태 관리. 상태를 소유한 뷰에서만 직접 상태를 변경할 수 있습니다.@Binding: 다른 뷰의 상태를 참조(binding)하여, 해당 상태를 읽고 수정할 수 있게 합니다. 즉, @Binding은 특정 상태에 대한 읽기/쓰기 접근 권한을 하위 뷰에게 전달해 줍니다.사용 시나리오@Binding은 상태를 소유한 뷰가 아닌 하위 뷰에서도 해당 상태를 수정하거나 참조할 수 있도록 할.. 2024. 9. 21.
Self._printChanges() let _ = Self._printChanges()는 디버깅 목적으로 SwiftUI에서 제공하는 특수한 메서드를 사용하는 코드입니다. 이를 통해 SwiftUI 뷰가 어떻게 업데이트되고 있는지 추적할 수 있습니다.Self._printChanges()의 역할Self._printChanges()는 SwiftUI에서 뷰의 상태가 변경될 때, 어떤 부분이 업데이트되고 있는지를 출력해주는 디버깅 도구입니다. SwiftUI 뷰의 상태 변경 시 해당 메서드를 사용하면, 콘솔에 상태 변화가 발생할 때마다 어떤 값이 변경되어 뷰가 다시 그려졌는지에 대한 정보를 출력할 수 있습니다.let _ = 부분의 역할let _ = 구문은 변수 생성을 의도적으로 무시하는 Swift 문법입니다. 이 경우, _printChanges() 메.. 2024. 9. 21.
@State와 private을 함께 사용하는 이유 1. @State는 View의 상태를 저장하고 관리@State는 SwiftUI에서 뷰(View)의 상태를 저장하고 관리하는 데 사용됩니다. SwiftUI에서 @State로 선언된 변수는 뷰의 내부 상태로, 상태가 변경될 때마다 자동으로 UI가 다시 그려집니다. 이를 통해 뷰의 데이터를 쉽게 업데이트할 수 있습니다.2. private는 외부에서 상태에 직접 접근하지 못하게 보호@State로 선언된 변수는 뷰 내부에서만 사용되어야 합니다. 즉, 외부에서 해당 변수에 직접 접근하거나 변경할 필요가 없습니다. Swift의 private 접근 제어자는 이를 보장해 줍니다. private를 사용하여 변수에 외부에서 접근하는 것을 방지함으로써 데이터 캡슐화(Encapsulation)를 유지할 수 있습니다.@State.. 2024. 9. 21.
UIKit와 SwiftUI 사용법 UIKit과 SwiftUI는 iOS 앱 개발에서 자주 사용되는 두 가지 UI 프레임워크입니다. 각각의 사용법은 다소 차이가 있으며, 두 프레임워크를 함께 사용하는 방법도 있습니다. 아래에서 UIKit과 SwiftUI의 기본적인 차이점과 함께, 이 둘을 혼합하여 사용하는 방법을 소개하겠습니다.UIKit의 기본 사용법UIKit은 오랫동안 iOS 앱 개발에서 사용된 전통적인 프레임워크로, UIViewController, UIView, UITableView 등의 클래스를 사용하여 사용자 인터페이스를 구성합니다.예시 코드: UIKit에서 버튼 생성import UIKitclass ViewController: UIViewController { override func viewDidLoad() { s.. 2024. 9. 20.