Mobile/Swift
[SwiftUI] SwiftUI 문서 찍먹하기
펭귄알
2024. 11. 11. 15:45
이번 글에서는 예전에 UIKit, Storyboard 개발을 다 해보았지만 SwiftUI에 대해서는 얕은 지식을 가지고 있다는 생각이 들었습니다. 저의 궁극적인 목표는 UIKit과 SwiftUI 모두 구현하여 두가지를 하나의 프로젝트에 녹여내는게 제 목표입니다.
아래는 각각의 사용후기를 적어보았습니다.
사용후기
UIKit
장점
- 오랫동안 사용되어 아직도 사용되는곳이 많습니다.
- 레퍼런스가 많습니다.
단점
- CodeBase로 UI를 구현하다보니 코드의 양이 방대해집니다. (관리가 필요하다)
- SwiftUI처럼 Preview가 지원되지않음습니다.
SwiftUI
장점
- UIKit에 비해 적은 양의 코드로 UI개발이 가능합니다.
- 실시간 미리보기를 통해 빠른 개발이 가능합니다.
단점
- UIKit에 비해 새로운 개념과 접근 방식을 익혀야 합니다.
- iOS 13 이상에서만 사용가능합니다.
요즘 Flutter 개발을 통해 선언형 UI 패러다임에 적응을 했는데, SwiftUI를 이해하는데 많은 도움이 되지않을까 싶습니다. 요구사항에 따라 사용하는 기술은 다르겠지만, 결국 2가지를 다 사용할 줄 알아야 제 미래에 도움이 될 거 같네요... ?
공식문서를 찾아보면 아래와 같이 정리되어있습니다.
@State, @Binding, @Bindable 그리고 @ObservableObject등 다양한 개념들이 추가되었습니다. 이 내용에 대해 정리 해볼게요.
Creating and Sharing View State
- State: SwiftUI에서 뷰의 상태를 관리하기 위한 프로퍼티 래퍼입니다. 뷰 내부에서 상태를 선언하고 관리할 때 사용됩니다.
- Bindable: 데이터 바인딩을 지원하는 프로토콜로, 뷰와 데이터 간의 동기화를 쉽게 할 수 있습니다.
- Binding: 부모 뷰와 자식 뷰 간에 데이터를 공유하고 동기화하는 데 사용되는 프로퍼티 래퍼입니다.
Creating Model Data
- StateObject: SwiftUI에서 객체의 상태를 관리하기 위한 프로퍼티 래퍼입니다. 뷰가 처음 생성될 때 객체를 초기화하고 소유합니다.
- ObservedObject: 외부에서 생성된 객체를 관찰하고, 해당 객체의 상태가 변경될 때 뷰를 업데이트합니다.
- ObservableObject: 데이터 모델이 변경될 때 이를 알리기 위해 사용하는 프로토콜입니다. @Published 속성을 통해 변경 사항을 브로드캐스트할 수 있습니다.